Как я могу получить экземпляр разрешения зависимостей в веб-api? В asp.net mvc я могу сделать DependencyResolver.Current
, есть ли эквивалент в web api?
Как получить экземпляр преобразователя зависимостей в веб-API ASP.NET
Ответ 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))
Надеюсь, это поможет вам.