0

我无法IDictionary<string,List<string>>在 Windsor 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 config做到这一点吗?谢谢

4

1 回答 1

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>
于 2014-01-13T16:19:32.493 回答