Внедрение зависимостей для параметров метода действия ASP.NET Web API

Я работаю над проектом ASP.NET Web API в C # для интерфейса JSON с мобильным приложением. Моя идея состояла в том, чтобы создать интерфейсы для всех запросов, а затем использовать только эти интерфейсы в коде Web API.

Я закончил с чем-то вроде этого:

public interface IApiObject {}
public interface IApiResponse : IApiObject where T : IApiObject {}
public interface IApiRegistrationRequest : IApiObject {}

Мой контроллер выглядит так:

public class MyApiController : ApiController
{

    public IApiResponse Register(IApiRegistrationRequest request) {
        // do some stuff
    }
}

Мой проект Web API также содержит реализации этих интерфейсов.

Я предполагал, что проекты Web API используют привязку модели, как проекты MVC, поэтому я создалModelBinderProvider знает о наследовании для предоставления связывателя для всех IApiObjects и настраиваемого связывателя модели с использованием контейнера Unity для разрешения интерфейсов с их реализациями.

Однако после еще одного расследования я наткнулсяКак Web API выполняет привязку параметров и обнаружил, что Web API использует средства форматирования вместо связывателей моделей для сложных типов. В связанном посте блога рекомендуется использовать ModelBinderAttribute для моих параметров действия, но этот атрибут принимает только тип в качестве параметра. Однако мой пользовательский связыватель модели не содержит пустого конструктора (ему нужен контейнер для единства), поэтому мне нужно передать его экземпляр.

Другой способ, о котором я могу думать, - это использование внедрения зависимостей для средств форматирования. К сожалению, я не знаком с ними, так как никогда не использовал их раньше.

Какой правильный путь? И как мне это сделать?

Ответы на вопрос(2)

Ваш ответ на вопрос