2016-10-18 54 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已经安定下来了。

我们很乐意为此支持提供更新的拉取请求。同时,该问题被标记为增强请求。

相关问题