Как внедрить зависимости в global.asax.cs

Как мне внедрить зависимости в global.asax.cs, то есть в класс MvcApplication?

Имея ранее использовал шаблон Service Locator (анти-) для внедрения зависимостей, я пытаюсь следовать рекомендациям в моем последнем приложении MVC, используя контейнер IOC (в частности, Unity.Mvc3, потому что он поставляется с реализацией IDependencyResolver из коробки) и внедрение конструктора.

Пока все кажется довольно простым, за исключением пары загвоздок, одна из которых находится в global.asax.cs (другая - для настраиваемых атрибутов, но уже есть вопрос о SO, охватывающий это).

Обработчики событий HttpApplication в классе MvcApplication, например:

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

Любая помощь / совет приветствуются!

36
задан magritte 13 October 2011 в 20:31
поделиться