使用windsor配置定义字典

时间:2013-05-15 21:24:15

标签: c# xml castle-windsor

我无法在windsor xml文件中定义IDictionary<string,List<string>>

我的班级(C#):

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

windsor配置文件:

<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 个答案:

答案 0 :(得分:1)

我用来初始化词典的策略。

  • 使用复制构造函数创建字典的自定义类:
public class MyDictionary : Dictionary<int, string>
{
    public MyDictionary(Dictionary<int, string> source)
    {
        foreach (var entry in source)
        {
            Add(entry.Key, entry.Value);
        }
    }
}
  • 在配置中定义您的组件:
<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>