Что делать, если внедрение зависимостей невозможно?

После долгих пинков и криков я начинаю принимать DI, несмотря на то, насколько чище SL может показаться по мере роста зависимостей.

Тем не менее, в IMO все еще есть существенная преграда в отношении DI:

DI невозможен, если у вас нет контроля над созданием объекта. В мире ASP.NET примеры включают в себя: HttpModule, HttpHandler, Page и т. Д.

В приведенном выше сценарии мы прибегаем к статическому местоположению службы для разрешения зависимостей, обычно через HttpContext.Current , что неизменно определяет область видимости из текущего потока. Итак, если мы собираемся использовать здесь статический SL, тогда почему бы не использовать его и где-нибудь еще?

Является ли ответ простым: стисните зубы и используйте SL, когда это необходимо (как указано выше), но постарайтесь отдать предпочтение DI? И если так: не использование статического SL только один раз потенциально нарушит целостность всего приложения? По сути, сводя на нет тяжелую работу DI везде?

6
задан Lawrence Wagerfield 20 February 2011 в 21:56
поделиться