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>