Подтвердить что ты не робот

Как получить доступ к контейнеру autofac в контроллере ASP.NET MVC3?

Я хотел бы разрешить зависимость, используя именованный параметр в контроллере MVC. Если я могу получить доступ к контейнеру Autofac, я должен сделать это так:

var service = Container.Resolve<IService>(
    new NamedParameter("fileExtension", dupExt)
);

Я не могу узнать, как получить доступ к контейнеру AutoFac. Есть ли глобальная ссылка на контейнер, который я могу использовать, или есть другой способ использования именованных параметров?

4b9b3361

Ответ 1

Я только что обнаружил, что могу использовать 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")
        );
    }
}

Я нашел полезные советы по получению глобального доступа к контейнеру в этом вопросе: Autofac в веб-приложениях, где я должен хранить контейнер для легкого доступа?

Я также нашел, как получить глобальный доступ к глобальному преобразователю зависимости: Глобальный доступ к автозависимости в ASP.NET MVC3?

Ответ 2

AutofacDependencyResolver.Current.ApplicationContainer

.Resolve

.ResolveNamed

.ResolveKeyed

.....