AutoFac创建类型,无论存在

Bri*_*ins 3 .net c# dependency-injection autofac

我想使用AutoFac将引用注入到对象的构造函数中.但是,实际对象本身未注册.我正在为ASP.NET MVC控制器工厂执行此操作,其中控制器将不会注册,但构造函数params将是.我设法团结一致,但我遇到了AutoFac的问题.

那可能吗?

谢谢.

Nic*_*rdt 9

让Autofac以Unity的方式解析任何未注册的类型:

builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
Run Code Online (Sandbox Code Playgroud)

此处描述了此解决方案的早期版本.

但是,我加上史蒂文的回答,并鼓励你使用它而不是上面的.使用Autofac,您最好使用预先构建的MVC集成.在MVC3上设置是一块蛋糕 - 请参阅这些逐步说明.

即使您构建自己的控制器工厂,如果您不依赖于"解决任何问题"行为,生活将更加可预测:)


Ste*_*ven 6

Autofac无法解析尚未注册的类型,即使此类型具有单个公共构造函数.

在您的情况下,这个问题可以很容易地解决,因为有一个Autofac的Mvc3Ingegration包,其中包含RegisterControllers构建器的扩展方法.您可以按如下方式使用它:

builder.RegisterControllers(typeof(MvcApplication).Assembly);
Run Code Online (Sandbox Code Playgroud)