Castle Windsor:我可以获得某种类型的所有实例吗?
答
温莎可以做你通过CollectionResolver
subdependency解析请求的内容:
var container = new WindsorContainer();
var kernel = container.Kernel;
kernel.Resolver.AddSubResolver(new CollectionResolver(kernel));
现在,如果你注册的ITask
多个实现,你的任务运行可以有一个这样的构造函数:
public TaskRunner(IEnumerable<ITask> tasks)
{
// ...
}
这是你想要的,对吧?
+0
完美。谢谢。 – 2011-03-25 00:04:09
答
是,
container.ResolveAll<ITask>()
本博客文章详细解释了如何做到这一点的容器无知方式:
10 Advanced Windsor Tricks – 3. How to resolve arrays
给予对方的回答相似。
+1
对不起,我错过了一个观点,即我的应用程序是容器无知,因此容器调用会有点吮吸......如果这是我可以隐藏在TaskResolver中的唯一方法,那么我的主人可以通过它请求构造函数。 – 2011-03-24 21:03:51
我正在写我的应用程序容器无知,所以我正在寻找一种方法,将通过构造函数工作。 – 2011-03-24 21:03:21