Как зарегистрировать сервис в внедрении зависимостей, у которого есть конструктор в ASP. NET MVC - PullRequest
1 голос
/ 18 января 2020

У меня есть класс обслуживания и его интерфейс с именем:

IBusApi, BusApi

, и я могу легко зарегистрировать его в Autofa c, например,

builder.RegisterType<BusApi>().As<IBusApi>();

, но теперь у меня есть конструктор для этой службы, который внедряет HttpClient

public BusApi(HttpClient http)
{
    _http = http ;
}

как я могу зарегистрировать эту службу в DI?

Учитывая, что она имеет конструктор

Ответы [ 2 ]

1 голос
/ 18 января 2020

Ответ одинаков для всех библиотек DI / IO C.

Для регистрируемого вами типа (здесь BusApi). Все типы в конструкторе этого типа также должны быть зарегистрированы / разрешены в контейнере DI (здесь HttpClient).

Так что вы можете сделать builder.RegisterType<HttpClient>() или builder.RegisteInstance(new HttpClient(..) ).

Относительно регистрации HttpClient вы также можете прочитать это: https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests?view=aspnetcore-3.1&viewFallbackFrom=aspnetcore-2.0

0 голосов
/ 18 января 2020

Как правило, вам нужно зарегистрироваться для всех типов в конструкторе в контейнере DI.

Таким образом, вы можете решить вашу проблему следующим образом

builder.Register(c => new HttpClient()).As<HttpClient>();

Прочитайте следующую ссылку, чтобы получить лучшее понимание

...