0

Autofac.Configurationを使用していますが、ネストされたプロパティ構成を使用できません。次のプロパティ NestedListInDictPropThatDoesNotWork が機能していません:

    "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" ]
        }

そのために他の構文を使用する必要がありますか? 値が単純な値の型ではなく項目のリストである辞書を構成したいと考えています。

4

1 に答える 1

1

注:問題として Autofac に相互投稿しま​​した。実装またはタイムラインに関するさらなる議論がそこで行われます。

構成ライブラリは、プロパティ値を把握するための完全な "モデル バインディング" を行っていません。これは、よりフラットなバインディングの概念を使用した、はるかに単純なメカニズムです。これは、従来の XML スタイルの構成がサポートするものに非常に近いものです (「再帰バインディング」よりも「キーと値のペア」が多い)。

ここで辞書を解析する方法を確認できます。型コンバーターを試し、値をキャストしています。

それが「うまくいかない」理由を理解するには、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 が少し落ち着いた今、それは私たちにとってより良い選択肢かもしれません。

このサポートの更新を含むプル リクエストを喜んで受け付けます。それまでの間、この問題は機能強化リクエストとしてマークされています。

于 2016-10-19T15:26:33.757 に答える