Castle Windsor:注入NameValueCollection与Dictionary

时间:2010-05-13 19:22:30

标签: c# asp.net dependency-injection castle-windsor

我已经完成了许多配置,其中字典被传递到<parameters>块中的服务。

但我现在发现自己需要的是构建一个NameValueCollection(允许多个条目使用相同的密钥)或一组KeyValuePair个对象。

这样做的原因是我在给定b时不使用此词典查找a,我基本上使用它来传递要使用的(a,b)的元组(对)稍后在代码中。

我是城堡风的新手,我想知道如何制作KeyValuePair注入的列表,或注入NameValueCollection

我需要的是这样的东西:

<component
    id="Shipper.Air"
    service="CheckoutSystem.Shipping.IShipper, Components"
    type="CheckoutSystem.Shipping.ConditionalShipper, Components">
    <parameters>
      <id>8AED4A27-B5C2-46ad-BEDE-58DCB38F60DA</id>
      <MustSatisfy>True</MustSatisfy>
      <Shippers>
        <dictionary>
          <item key="Ups">${Shipper.UpsAir}</item>
          <item key="CanadaPost">${Shipper.CanadaPostAir}</item>
        </dictionary>
      </Shippers>
      <Conditions>
        <NameValueCollection> <!-- START Example -->
          <item key="Ups">$(ShipperCondition.HeavyItems}</item>
          <item key="CanadaPost">${ShipperCondition.FarNorth}</item>
          <item key="Ups">${ShipperCondition.Default}</item>
        </NameValueCollection> <!-- END Example -->
      </Conditions>
    </parameters>
  </component>