Доступ к переменным, созданным в Application_Start ASP.NET MVC 3 - PullRequest
0 голосов
/ 23 марта 2011

В моем методе 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. Теперь я знаю, что это запускается только один раз, когда приложение запускается, однако, как я смогу получить доступ к переменной контейнера, чтобы я мог извлечь хранилище документов, хранящееся там, из любой точки моего приложения.

Ответы [ 2 ]

0 голосов
/ 23 марта 2011

Хорошо! Как отметил Дарин, это не очень хорошая практика, но если вы хотите, Вы могли бы сделать

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

и доступ к нему по

var container =  Application["container"] as Container; // assuming Container is the type
0 голосов
/ 23 марта 2011

Идея DI заключается в том, что вы конфигурируете свой контейнер в Application_Start и подключаете все необходимые зависимости к своим объектам, чтобы вам никогда не требовался доступ к контейнеру в других частях кода. Итак, чтобы ответить на ваш вопрос: просто попросите части приложения, которым требуется доступ к DocumentStore, принять его в качестве аргумента конструктора, а затем настройте AutoFac для его внедрения.

Наличие других частей вашего кода в зависимости от контейнера - плохая практика, так как они тесно связаны с ним.

...