如何访问 ASP.NET MVC3 控制器中的 autofac 容器?

发布于 2024-12-10 18:14:26 字数 251 浏览 0 评论 0原文

我想在 MVC 控制器中使用命名参数来解决依赖关系。如果我可以访问 Autofac 容器,我应该能够这样做:

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

我不知道如何访问 AutoFac 容器。是否有我可以使用的容器的全局引用,或者是否有其他方法可以使用命名参数?

I would like to resolve a dependency using a named parameter in an MVC controller. If I can access the Autofac container I should be able to do it like so:

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

I can't find out how to access the AutoFac container. Is there a global reference to the container that I can use or is there another way to use named parameters?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

这样的小城市 2024-12-17 18:14:26

我刚刚发现我可以使用 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,其中我应该存储容器以便于访问吗?

我还找到了如何在此处全局访问依赖项解析器:全局访问 ASP.NET MVC3 中的 autofac 依赖解析器?

I've just discovered I can use IComponentContext for the same thing. You can inject an instance of IComponentContext into the controller.

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")
        );
    }
}

I've found some good advice on getting global access to the container in this question:
Autofac in web applications, where should I store the container for easy access?

I've also found how to get access to the dependency resolver globally here: Global access to autofac dependency resolver in ASP.NET MVC3?

羁〃客ぐ 2024-12-17 18:14:26
AutofacDependencyResolver.Current.ApplicationContainer

.Resolve

.ResolveNamed

.ResolveKeyed

.....
AutofacDependencyResolver.Current.ApplicationContainer

.Resolve

.ResolveNamed

.ResolveKeyed

.....
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文