我正在使用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 -> System.Collections.Specialized.NameValueCollection -> System.Collections.Specialized.NameValueCollection.
但是,如果我将NameValueCollection替换为任何其他类型,则代码可以正常工作。
我是在做什么烦人的事情吗?我缺少的NameValueCollection类型有什么特别之处吗?或者这是Autofac本身的问题吗?
发布于 2010-03-05 08:55:56
这是故意的。请参阅自动毛
Autofac会自动选择具有从容器中获得的参数最多的构造函数。
尝试像这样注册NameValueCollection (但不确定这是否有效):
builder.RegisterType<NameValueCollection>().UsingConstructor();如果那不起作用,试试
builder.Register(c => new NameValueCollection());https://stackoverflow.com/questions/2385370
复制相似问题