2015-06-26 22 views
1

,能够创建用于一个接口或非原始名为注册,e.g.创建xml配置名为串

... 
<register type="ILogger" mapTo="PageAdminLogger" name="emergency" /> 
... 

是否也可以创建一个名为登记的字符串,尤其是一个会被多次使用?什么我的目标是什么:

... 
<container> 
    <register type='System.String' name='serverAddress'> 
    127.0.0.1 
    </register> 

    <register type='IFooConnector' mapTo='FooConnector'> 
    <constructor> 
     <param name='addr' dependencyName='serverAddress'/> 
    </constructor> 
    </register> 

    <register type='IBarDoer' mapTo='BarDoerOnAServer'> 
    <constructor> 
     <param name='server' dependencyName='serverAddress'/> 
    </constructor> 
    </register> 
</container> 
... 

这样当FooConnectorBarDoerOnAServer和建造他们都得到"127.0.0.1"作为输入到它们的构造,但"127.0.0.1"只在一个地方(减少重复)编码,还所有的文字变量(例如端口,超时值,用户名等)都配置在一个地方,而不是围绕配置文件散布。

回答

1

是的,您可以使用Unity的XML配置创建一个命名字符串。

要做到这一点,你会使用instance元素。

在您的例子看起来会像:

<container> 
    <instance name='serverAddress' value='127.0.0.1' /> 

    <register type='IFooConnector' mapTo='FooConnector'> 
    <constructor> 
     <param name='addr' dependencyName='serverAddress'/> 
    </constructor> 
    </register> 

    <register type='IBarDoer' mapTo='BarDoerOnAServer'> 
    <constructor> 
     <param name='server' dependencyName='serverAddress'/> 
    </constructor> 
    </register> 
</container>