c# - Autofac 没有找到最贪婪的构造函数

标签 c# .net dependency-injection autofac

我正在尝试使用 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));

没什么太复杂的。

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

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

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

最佳答案

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

这是初学者的错误!

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

关于c# - Autofac 没有找到最贪婪的构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17626005/

相关文章:

c# - 没有 Ninject 的依赖注入(inject)

java - 依赖注入(inject)是如何手动实现的?

c# - DivideByZeroException 太慢

c# - asp.net mvc 4 异步 Controller 卡在非任务异步方法上

c# - 如何检测斑马打印机是否安装

c# - 如何在 ASP.NET MVC 中使用 GET 请求发送 Content-Type header ?

c# - ISO 8601 值的解析日期 24 :00:00 fails

c# - 使用 AppDomain.AssemblyResolve 事件

c#如何检测文件中的多个空格

angularjs - 如何将常量注入(inject)指令的 Controller ?