【问题标题】:Accessing Variables Created In Application_Start ASP.NET MVC 3访问在 Application_Start ASP.NET MVC 3 中创建的变量
【发布时间】:2011-04-01 02:10:09
【问题描述】:

我的 Application_Start 方法中运行了以下代码:

var builder = new ContainerBuilder();

var store = new DocumentStore { Url = "http://localhost:8081" };
store.Initialize();

builder.RegisterInstance(store);

var container = builder.Build();

我正在使用 AutoFac 来存储我的 RavenDB DocumentStore 的实例。现在我知道这只会在应用程序启动时运行一次,但是我如何能够访问容器变量,以便我可以从应用程序的任何位置检索存储在其中的 DocumentStore。

【问题讨论】:

    标签: c# asp.net-mvc-3 global-asax


    【解决方案1】:

    DI 的想法是您在Application_Start 中配置您的容器,并将所有必要的依赖项连接到您的对象中,这样您就无需在代码的其他部分访问该容器。因此,回答您的问题:只需让应用程序中需要访问 DocumentStore 的部分将其作为构造函数参数,然后配置 AutoFac 以注入它。

    让代码的其他部分依赖于容器是一种不好的做法,因为它们会与容器紧密耦合。

    【讨论】:

      【解决方案2】:

      好的!正如达林指出的那样,这不是一个好习惯,但如果你愿意, 你可以这样做

      var container = builder.Build();
      Application["container"] = container;
      

      并通过

      访问它
      var container =  Application["container"] as Container; // assuming Container is the type
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-23
        • 2017-06-09
        • 2016-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-12
        相关资源
        最近更新 更多