2013-05-15 56 views
0

我沒有定義在溫莎IDictionary<string,List<string>> XML文件定義的溫莎配置字典

我的類(C#):

public class myService 
{   
    public IDictionary<string, List<string>> Apis { get; set; } 
} 

溫莎配置文件:

<component id="myService" type="Test.Service.myService, Test.Service"> 
<parameters> 
    <Apis> 
    <dictionary> 
     <entry key="api1">${api}</entry> 
    </dictionary> 
    </Apis> 
</parameters> 
</component> 

<component id="api" type="System.Array, mscorlib"> 
    <array> 
    <item>a</item> 
    <item>b</item> 
    </array> 
</component> 

我也試過:

<component id="api" type="System.Collections.Generic.List`1[[System.String, mscorlib]], mscorlib"> 
<parameters> 
    <collection> 
     <array> 
     <item>a</item> 
     <item>b</item> 
     </array> 
    </collection> 
    </parameters> 
</component> 

我可以使用windsor配置嗎? 謝謝

回答

1

有一個策略,我用來初始化字典。

  • 創建自定義類的詞典中,有一個拷貝構造函數:
<component id="DictionaryComponent" type="MyDictionary, MyAssembly"> 
    <parameters> 
     <source> 
      <dictionary> 
       <entry key="2012">last year</entry> 
       <entry key="2013">this year</entry> 
      </dictionary> 
     </source> 
    </parameters> 
</component> 
public class MyDictionary : Dictionary<int, string> 
{ 
    public MyDictionary(Dictionary<int, string> source) 
    { 
     foreach (var entry in source) 
     { 
      Add(entry.Key, entry.Value); 
     } 
    } 
} 
  • 在配置中定義你的組件3210