【发布时间】:2013-11-08 11:50:44
【问题描述】:
我有一个队列服务,它必须根据队列中对象的类型注入不同的依赖关系图。我正在使用Structure Map。
因此,如果队列中的对象是TypeA,则使用TypeA 的具体类,如果是TypeB,则使用TypeB 的具体类。
我想避免队列中的代码,例如:
if (typeA)
{
// setup TypeA graph
}
else if (typeB) {
// setup TypeB graph
}
在图中,我还有一个泛型类,例如IReader(ISomething, ISpomethingElse),其中IReader 是泛型的,但需要为该类型注入正确的ISomething 和ISomethingElse。 ISomething 也会有依赖等等。
目前我创建了一个TypeA 或TypeB 对象并使用StructureMap 将一个通用处理器类注入其中,然后将factory 手动注入一个TypeA 或TypeB 工厂到如下方法:
Processor.Process(new TypeAFactory) // perhaps I should have an abstract factory...
但是,由于工厂随后创建了上面提到的通用 IReader,因此我最终手动注入了所有 TypeA 或 TypeB 类。
我希望这足够有意义。
我是 StructureMap 的新手,希望有人可以在这里为我指明正确的方向,以获得灵活而优雅的解决方案。
谢谢
【问题讨论】:
-
我不认为我真的理解你的问题。您能否创建一些我们可以使用的简化工作代码示例。其次,更好地定义队列中的内容。您可以访问那里的容器吗?
标签: dependency-injection structuremap abstract-factory