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

2023-03-07,,

当使用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>

castle windsor学习-----XML Inline Parameters 内联参数的相关教程结束。

《castle windsor学习-----XML Inline Parameters 内联参数.doc》

下载本文的Word格式文档,以方便收藏与打印。