2016-10-18 96 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已經安定下來了。

我們很樂意爲此支持提供更新的拉取請求。同時,該問題被標記爲增強請求。

相關問題