asp.net-mvc-3 – 如何注入依赖项到global.asax.cs

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – 如何注入依赖项到global.asax.cs前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如何注入依赖关系到global.asax.cs,即MvcApplication类?

以前使用服务定位器(反)模式的依赖注入,我试图通过使用IOC容器(特别是Unity.Mvc3,因为它附带的IDependencyResolver的实现,从最后的MVC应用程序的最佳实践建议框)和构造函数注入。

除了一些阻碍,其中一个是在global.asax.cs(另一个是为自定义属性,但有一个问题,SO覆盖),一切似乎相当直截了目前为止。

MvcApplication类中的HttpApplication事件处理程序,如:

Application_Start()
Application_EndRequest(object sender,EventArgs e)
Application_AcquireRequestState(object sender,EventArgs e)

可能需要外部依赖性。对ILogService的依赖。所以我如何注入他们没有诉诸服务定位器(反)模式例如。

private static ILogService LogService
{
    get
    {
        return DependencyResolver.Current.GetService<ILogService>();
    }
}

任何帮助/建议非常感谢!

解决方法

你的global.asax.cs中的类是你的 Composition Root,所以你不能(也不应该)从外面注入任何东西。

但是,MvcApplication类只有一个实例,因此如果您需要在其中一个方法中使用服务,则只需将其声明为成员字段,例如:

public class MvcApplication : System.Web.HttpApplication
{
    private readonly ILogService log;

    public MvcApplication()
    {
        this.log = new MyLogService();
    }

    protected void Application_Start()
    {
        // ...

        this.log.Log("Application started");
    }
}
原文链接:https://www.f2er.com/aspnet/254344.html

猜你在找的asp.Net相关文章