代码之家  ›  专栏  ›  技术社区  ›  Matthew King

无法使用Autofac解析NameValueCollection

  •  3
  • Matthew King  · 技术社区  · 14 年前

    我正在使用autofac2.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而崩溃:

    循环组件依赖关系 System.Collections.Specialized.NameValue集合

    但是,如果用任何其他类型替换NameValueCollection,代码就可以正常工作。

    1 回复  |  直到 14 年前
        1
  •  3
  •   Anton Gogolev    14 年前

    这是故意的。看见 Autowiring :

    Autofac会自动选择具有最多可从容器中获得的参数的构造函数。

    尝试注册 NameValueCollection

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

    如果不起作用,试试看

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