我想使用AutoFac将引用注入对象的构造函数中。但是,实际对象本身未注册。我正在为ASP.NET MVC控制器工厂执行此操作,其中控制器将不会注册,但构造函数params将是。我设法团结一致,但我遇到了AutoFac的问题。
这可能吗?
感谢。
答案 0 :(得分:9)
让Autofac以Unity的方式解析任何未注册的类型:
builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource());
此解决方案的早期版本描述为here。
然而,我+ 1ed Steven的回答并鼓励你使用它而不是上面的。使用Autofac,您最好使用预先构建的MVC集成。在MVC3上设置是一件小事 - 请参阅these step-by-step instructions。
即使您建立了自己的控制器工厂,如果您不依赖于“解决任何问题”的行为,生活也会更加可预测:)
答案 1 :(得分:6)
Autofac无法解析尚未注册的类型,即使此类型具有单个公共构造函数也是如此。
在您的情况下,此问题可以轻松解决,因为Autofac有一个Mvc3Ingegration包,其中包含构建器的RegisterControllers
扩展方法。您可以按如下方式使用它:
builder.RegisterControllers(typeof(MvcApplication).Assembly);