В книге «Внедрение зависимостей: принципы и практики» описывается, как настроить внедрение зависимостей с помощью реализации IControllerActivator
. В базовом проекте ASP. NET это можно добавить к службам программы методом Startup.ConfigureServices()
. Все это имеет смысл.
Однако ASP. NET Framework (4.7.2) не использует ту же модель. Класса Startup
нет. Существует интерфейс IControllerActivator
, но он находится в другом пространстве имен (System.Web.Mvc
против Microsoft.AspNetCore.Mvc.Controllers
), имеет разных членов, и когда я пытаюсь вызвать следующее:
public static void Register(HttpConfiguration config) {
config.Services.Add(typeof(IControllerActivator), new CompositionRoot());
... I получить исключение The service type IControllerActivator is not supported.
Конечная цель заключается в том, чтобы иметь возможность определять конструкторы, использующие параметры, в ApiControllers и создавать экземпляр контроллера путем разрешения его из контейнера DI, когда служба получает запрос .
Как реализовать этот шаблон в. NET Framework?