5

我正在尝试使用 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)在 -seperate- dll 中找到,我通过AddReferences.

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

4

1 回答 1

3

问题是我的 greedy调用了,但是如果你查看 greedy-ctor,你会发现我在做: this().

这是一个初学者错误!

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

于 2013-07-13T04:36:24.160 回答