Как получить экземпляр преобразователя зависимостей в веб-API ASP.NET

Как я могу получить экземпляр разрешения зависимостей в веб-api? В asp.net mvc я могу сделать DependencyResolver.Current, есть ли эквивалент в web api?

Ответ 1

Игнорируйте, что люди говорят о том, что они являются анти-паттернами. Вы не получите полное покрытие DI, особенно с помощью этих молодых технологий. Например, во время написания NInject не поддерживает инъекцию в middlewares.

Чтобы ответить на ваш вопрос, распознаватель зависимостей для запроса доступен через HttpRequestMessage.GetDependencyScope(). Вы также можете использовать HttpConfiguration.DependencyResolver, но будьте осторожны, чтобы этот объект был неправильно привязан к выполняемому запросу.

Я бы рекомендовал проверить документацию для конкретной реализации IOC.

Ответ 2

При использовании Ninject в Web API вы можете использовать GlobalConfiguration.Configuration. Например, для IUserService:

(IUserService)System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(IUserService))

Надеюсь, это поможет вам.