Autofac找不到最贪婪的构造函数

本文关键字:构造函数 贪婪 找不到 Autofac | 更新日期: 2023-09-27 18:22:06

我正试图使用Autofac在引用的dll中找到最贪婪的构造函数。

它没有找到它,只找到一个无参数构造函数。

这是两个因素:

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));

没有什么太复杂的。

但这是我能想到的唯一奇怪的事情。

  1. typeof(MvcApplication)global.asax中存在此代码的项目相同
  2. typeof(MvcApplication)是在一个单独的dll中找到的,我通过AddReferences手动添加了它

有人看到我做错了什么吗?

Autofac找不到最贪婪的构造函数

问题是我的贪婪被调用了,但如果你看看贪婪的ctor,你会发现我在做: this()

这是一个初学者的错误!

所以它调用了贪婪的ctor,但在进入作用域之前,它必须冒泡到另一个无参数的ctor。我一直认为这是跳过贪婪,只打无参数的。