Существует ли. NET Framework, эквивалентный. NET Core's IControllerActivator? - PullRequest
1 голос
/ 08 января 2020

В книге «Внедрение зависимостей: принципы и практики» описывается, как настроить внедрение зависимостей с помощью реализации 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?

1 Ответ

3 голосов
/ 08 января 2020

Я предполагаю, что это приложение ASP. NET MVC, поэтому вы используете DependencyResolver для этого.

Я не знаю, какой контейнер Io C вы используете, но все основные из них имеют встроенную поддержку его через свои пакеты nuget. Например, здесь AutoFa c документы , а вот Документы StructureMap для интеграции с ASP. NET MVC.

...