我有一个项目,我使用 Castle Windsor 进行依赖注入,更具体地说,我使用的是 XML 配置,因此可以根据参数以不同的方式运行公共服务。
例如(真的很简化):
<component id="Processors" service="System.Collections.Generic.IEnumerable`1[[Services.Interfaces.IProcessor, Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]" type="System.Collections.Generic.List`1[[Services.Interfaces.IProcessor, Services, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]">
<parameters>
<collection>
<list>
<item>${Processor1}</item>
<item>${Processor2}</item>
</list>
</collection>
<parameters>
</component>
<component id="Processor1" service="Services.Interfaces.IProcessor" type="Services.TestProcessor, Services">
<parameters>
<example>LIVE</example>
<id>Processor1</id>
</parameters>
</component>
<component id="Processor2" service="Services.Interfaces.IProcessor" type="Services.TestProcessor, Services">
<parameters>
<example>TEST</example>
<id>Processor2</id>
</parameters>
</component>
在运行时,我们解析名为 Processors 的组件,并依次遍历所有调用每个项目的项目。
正如您在上面的示例中看到的,我们在每个处理器上都有一个名为 id 的参数,这主要用于日志记录,并且对于跟踪哪个处理器有问题(并通过代理配置)非常有用。理想情况下,如果我可以重用组件配置中的 id(减少配置),那就太好了。
关于如何做到这一点的任何想法?