2016-10-18 16 views
0

Autofac.Configurationを使用しますが、ネストされたプロパティ設定を使用することはできません。次のプロパティNestedListInDictPropThatDoesNotWorkが動作していません。JSONのAutofac.Configurationによる辞書プロパティのネストされたリスト

"type": "Some.Modules.CoolModule, Some.Modules", 
    "properties": { 
     "StringProp": "hello world", 
     "IntProp": 8090, 
     "BoolProp": false, 
     "DictProp": { "key": "value" }, 
     "ListProp": [1, 2, 3, 4, 5], 
     "NestedListInDictPropThatDoesNotWork": { 
      "myKey": [ "A", "B" ] 
     } 

は私はそのため他の構文を使用する必要がありますか?私は、値が単純な値の型ではなく項目のリストであるディクショナリを構成したいと考えています。

答えて

1

注:クロス投稿as an issue to Autofac。実装またはタイムラインに関する詳細な議論がそこで行われます。

構成ライブラリは、プロパティ値を把握するための完全な「モデル結合」を実行していません。クラシックなXMLスタイルの設定(「キーと値のペア」の方が「再帰的バインディング」よりも)に近い、よりフラットなバインディングコンセプトを使用するほうがはるかに簡単なメカニズムです。

see how we parse dictionaries hereとすることができます。それはタイプコンバータを試して、その価値についてキャスティングしています。

なぜ「うまくいきませんか」を理解するには、Microsoft.Extensions.Configurationがこの構成をどのように解析するかを考えます。これは、そのシステムにすべてのキー/値のペアです:

"type" = "Some.Modules.CoolModule, Some.Modules" 
"properties:StringProp" = "hello world" 
"properties:IntProp" = "8090" 
"properties:BoolProp": "false" 
"properties:DictProp:key": "value" 
"properties:ListProp:0" = "1" 
"properties:ListProp:1" = "2" 
"properties:ListProp:2" = "3" 
"properties:ListProp:3" = "4" 
"properties:ListProp:4" = "5" 
"properties:NestedListInDictPropThatDoesNotWork:myKey:0" ="A" 
"properties:NestedListInDictPropThatDoesNotWork:myKey:1" ="B" 

Autofac構成のものは、各プロパティが何を意味するのか、「推測」しようとする最善をつくしますが、それは実際のモデルバインダーではありません。私たちはもともとそれを書いた時に、Microsoft.Configuration.Extensions.Binderのものはそこにはなかったし、そこに着くと、私たちがそれを必要とした場所ではなかった。これは、.NET Coreが少し落ち着いた今、より良い選択肢かもしれません。

このサポートのための更新プログラムを入手していただき、幸いです。その間、問題は拡張要求としてマークされます。

関連する問題