【发布时间】:2009-09-10 15:57:20
【问题描述】:
鉴于以下注册
builder.Register<A>().As<I>();
builder.Register<B>().As<I>();
builder.Register<C>().As<I>();
var container = builder.Build();
我希望将所有类型 I 的实例解析为 IEnumerable(数组或集合无关紧要)。
在温莎,我会写以下内容。
foreach(I i in container.ResolveAll<I>())
{
...
}
我正在从 Windsor 迁移到 Autofac 1.4.4.561,但看不到等效语法。
【问题讨论】:
-
您想分享的任何原因,您为什么要从温莎搬到 Autofac?
-
我真正喜欢 Autofac 的地方是能够通过 lamda 表达式表达动态组件构造。通过使用表达式而不是自动装配,当容器解析类型时,误解容器正在“做什么”的空间更少(注意:如果您愿意,autofac 支持自动装配)。最后,Windsor API 变得如此庞大,以至于它可以满足每一种可能性,它给人一种复杂的印象,而 IOC 作为一个概念实际上非常简单。并不是说我永远不会再使用 Windsor,只是尝试其他选项。
-
我考虑过从温莎搬到 Autofac。 Windsor 的 API 令人困惑。