在 xml 配置中创建命名字符串

Create a named string in xml configuration

可以为接口或非基元创建命名注册,e.g.

...
<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" 仅在一个地方编码(减少重复),以及所有文字变量(例如端口、超时、用户名等)都配置在一个地方,而不是散落在配置文件周围。

是的,您可以使用 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>