首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于供应商的Windsor容器配置问题

基于供应商的Windsor容器配置问题
EN

Stack Overflow用户
提问于 2010-11-01 22:16:58
回答 1查看 116关注 0票数 0

我非常熟悉IoC/DI的整个概念,但我以前从未实现过解决方案。这是我的第一次,所以如果你认为有必要的话,请给我一个正确的方向。

我有多个实现相同接口(IMyCustomFileReader)的类。我需要基于我的应用程序中的一些供应商信息使用这些实例之一。如果供应商是Vendor1,我希望IoC容器在分别请求IMyCustomFileReaderIDummyInterface实例时给出Vendor1FlatFileReaderDummyClass1

类似地,我希望容器返回XMLFileReaderDummyClass2的实例,而供应商是Vendor2

我认为(如果我错了请告诉我)我可以使用ChildContainers使用它。目前,我的xml如下所示:

代码语言:javascript
复制
<components>
  <component id="Vendor1"
             service="SomeAssembly.IMyCustomFileReader, SomeAssembly"
             type="SomeAssembly.Vendor1.Vendor1FlatFileReader, SomeAssembly.Vendor1">
  </component>
  <component id="Vendor1"
             service="SomeAssembly.IDummyInterface, SomeAssembly"
             type="SomeAssembly.DummyClass1, SomeAssembly">
  </component>

  <component id="Vendor2"
             service="SomeAssembly.IMyCustomFileReader, SomeAssembly"
             type="SomeAssembly.XMLFileReader, SomeAssembly">
  </component>
  <component id="Vendor2"
             service="SomeAssembly.IDummyInterface, SomeAssembly"
             type="SomeAssembly.DummyClass2, SomeAssembly">
  </component>
</components>

这种配置是错误的,因为我不能有多个具有相同id元素的组件--即使当接口与上面的示例不同时也是如此。我希望我能做一些类似Container.Resolve<IMyCustomFileReader>("Vendor1")的事情,然后当请求IMyCustomFileReader的一个实例,而key值是Vendor1时,我会得到Vendor1FlatFileReader的一个实例。

当我这样做的时候,我得到了一个Castle.MicroKernel.ComponentRegistrationException

我认为可能有用的是ChildContainers的概念,但我将如何在xml中配置这些概念呢?

另外,我不想给组件命名,比如Vendor1_IMyCustomFileReaderVendor2_IMyCustomFileReader。我也希望只有一个配置文件,而不是单独的每个供应商(如果可能的话)。以前有没有其他人遇到过类似的问题?我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2010-11-01 22:25:37

你愿意使用fluent注册API吗?如果是这样的话,您可以根据“供应商”来决定在运行时注册哪些组件(每个供应商的注册可以生活在一个单独的IWindsorInstaller实现中)。该解决方案假定您知道在启动时使用哪个“供应商”,并且“供应商”在应用程序的整个生命周期内不会更改(我猜这是一个基于您如何说明问题的有效假设)。您可以对XML配置采取类似的方法,但是您需要将每个供应商的配置分离到不同的配置文件中,并且您说您反对--您能说明原因吗?

请评论并告诉我,如果您认为fluent API方法可以工作,我很乐意发布一个例子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4073572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档