我正在使用Autofac 2.1.12处理我的依赖注入,并且遇到一个特定问题。我似乎无法解析NameValueCollection依赖项。
请考虑以下代码段:
class Foo
{
public Foo(NameValueCollection collection) { }
}
static class Run
{
public static void Main()
{
var builder = new ContainerBuilder();
builder.RegisterType<NameValueCollection>();
builder.RegisterType<Foo>();
using (var scope = builder.Build())
scope.Resolve<Foo>();
}
}
它会因未处理的DependencyResolutionException而崩溃:
循环组件依赖 检测到:Foo - &gt; System.Collections.Specialized.NameValueCollection - &GT; System.Collections.Specialized.NameValueCollection。
但是,如果我将NameValueCollection替换为任何其他类型,则代码可以正常工作。
我做了什么事情,我缺少NameValueCollection类型的特殊内容,或者这是Autofac本身的问题?
答案 0 :(得分:3)
这是设计的。见Autowiring:
Autofac会自动选择能够从容器中获取的参数最多的构造函数。
尝试像这样注册NameValueCollection
(不确定这是否可行):
builder.RegisterType<NameValueCollection>().UsingConstructor();
如果不起作用,请尝试
builder.Register(c => new NameValueCollection());