2010-03-05 90 views
3

我正在使用Autofac 2.1.12来处理依赖项注入,并且遇到了一个特定问题。我似乎无法解决NameValueCollection依赖项。无法使用Autofac解析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.NameValueCollection - > System.Collections.Specialized.NameValueCollection。

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

我正在做些什么,有什么特别的关于我失踪的NameValueCollection类型,或者这是Autofac本身的问题?

回答

3

这是设计。请参阅Autowiring

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

尝试注册NameValueCollection像这样(不知道这是否会工作,虽然):

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

如果还是不行,请尝试

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

添加一些括号到'新NameValueCollection()'和所有将膨胀:) – 2010-03-05 10:27:58