无法使用Autofac解析NameValueCollection

时间:2010-03-05 08:19:22

标签: c# .net autofac namevaluecollection

我正在使用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本身的问题?

1 个答案:

答案 0 :(得分:3)

这是设计的。见Autowiring

  

Autofac会自动选择能够从容器中获取的参数最多的构造函数。

尝试像这样注册NameValueCollection(不确定这是否可行):

builder.RegisterType<NameValueCollection>().UsingConstructor();

如果不起作用,请尝试

builder.Register(c => new NameValueCollection());