我正在尝试使用 Autofac 在引用 dll 中找到最贪婪的构造函数。
它没有找到它,只找到一个无参数构造函数。
这是两个 Actor :
public SimpleAuthenticationController() { .. }
public SimpleAuthenticationController(IAuthenticationCallbackProvider callbackProvider) : this()
现在这就是我使用 autofac
注册内容的方式:
var builder = new ContainerBuilder();
builder.RegisterType<SampleMvcAutoAuthenticationCallbackProvider>().As<IAuthenticationCallbackProvider>();
builder.RegisterControllers(typeof(MvcApplication).Assembly);
builder.RegisterControllers(typeof(SimpleAuthenticationController).Assembly);
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
没什么太复杂的。
但这是我能想到的唯一奇怪的事情。
typeof(MvcApplication)
是此代码所在的同一个项目,在global.asax
typeof(MvcApplication)
是在一个 -seperate- dll 中找到的,我通过AddReferences
手动添加了它。
有人看到我做错了什么吗?
最佳答案
问题是我的贪婪被调用了,但是如果你看一下贪婪-ctor,你会发现我在做: this()
。
这是初学者的错误!
所以它调用了贪婪的 ctor,但在它进入作用域之前,它必须冒泡到另一个无参数的 ctor。而且我一直认为它正在跳过贪婪而只是触及无参数。
关于c# - Autofac 没有找到最贪婪的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626005/