2015-06-26 23 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>