Asp.net-Mvc-3

如何訪問 ASP.NET MVC3 控制器中的 autofac 容器?

  • October 20, 2011

我想在 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?

引用自:https://stackoverflow.com/questions/7838021