castle windsor学习-----XML Inline Parameters 内联参数

当使用XML配置的时候,可能要给组件指定各种各样的依赖

1。简单的参数

  参数名称不区分大小写

<component
   id="ping"
   type="Acme.Crm.Services.PingService, Acme.Crm">
   <parameters>
      <pingServer>http://acme.org</pingServer>
      <pingInterval>00:00:30</pingInterval>
      <pingRetries>3</pingRetries>
      <pingNotificator>${emailSender}</pingNotificator>
   </parameters>
</component>

简单的参数是指简单的类型,如基元类型,Uri,DateTime,TimeSpan,Type,Enum 或者 服务的重写,这些参数有它们值表达(简单的名称标签)

参数类型怎么匹配呢?

Windsor不要求你指定参数的类型,而是当解析组件的时候,它将试图通过名称去匹配组件的依赖,并检查是否可以将进行转换

2.复杂的参数

  复杂的参数有多个元素组成

  例如你想指定如下的参数

[Convertible]
public class ServerInfo
{
   private readonly Uri address;

   public ServerInfo(Uri address)
   {
      this.address = address;
   }

   public Uri Address
   {
      get { return address; }
   }

   public int Port { get; set; }
}

应该做如下配置

<parameters>
   <pingServerInfo>
      <parameters>
         <address>http://localhost</address>
         <port>80</port>
      </parameters>
   </pingServerInfo>
</parameters>

3。List参数

public class MyComponent
{
   public MyComponent(IEnumerable<Uri> info)
   {
      Info = info;
   }

   public IEnumerable<Uri> Info { get; private set; }
}
<parameters>
   <info>
      <list>
         <item>http://localhost:80</item>
         <item>http://castleproject.org</item>
      </list>
   </info>
</parameters>

4.数组

<parameters>
   <info>
      <array>
         <item>http://localhost:80</item>
         <item>http://castleproject.org</item>
      </array>
   </info>
</parameters>

5.字典

<parameters>
   <info>
      <dictionary>
         <entry key="local">http://localhost:80</entry>
         <entry key="castle">http://castleproject.org</entry>
      </dictionary>
   </info>
</parameters>
原文地址:https://www.cnblogs.com/lanpingwang/p/6535821.html