Asp.net-Mvc-3
如何訪問 ASP.NET MVC3 控制器中的 autofac 容器?
我想在 MVC 控制器中使用命名參數來解決依賴關係。如果我可以訪問 Autofac 容器,我應該可以這樣做:
var service = Container.Resolve<IService>( new NamedParameter("fileExtension", dupExt) );我不知道如何訪問 AutoFac 容器。是否有對我可以使用的容器的全域引用,或者是否有另一種使用命名參數的方法?
我剛剛發現我可以使用 IComponentContext 來做同樣的事情。您可以將 IComponentContext 的實例注入控制器。
public class MyController : Controller { private readonly IComponentContext _icoContext; public void MyController(IComponentContext icoContext) { _icoContext= icoContext; } public ActionResult Index() { var service = _icoContext.Resolve<IService>( new NamedParameter("ext", "txt") ); } }我在這個問題中找到了一些關於全域訪問容器的好建議: Web 應用程序中的 Autofac,我應該在哪裡儲存容器以便於訪問?
我還在這裡找到瞭如何全域訪問依賴解析器:Global access to autofac dependency resolver in ASP.NET MVC3?