我有服务类及其接口,名为:
IBusApi, BusApi
这样我就可以轻松地在Autofac中注册
builder.RegisterType<BusApi>().As<IBusApi>();
但是现在我有了该服务的构造函数,该构造函数可以注入HttpClient
public BusApi(HttpClient http)
{
_http = http ;
}
如何在DI中注册该服务?
考虑到它具有构造函数
答案 0 :(得分:1)
对于所有DI / IOC库,答案都是相同的。
对于您注册的类型(此处为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
答案 1 :(得分:0)
基本上,您需要在DI容器中的构造函数中注册所有类型。
所以您可以像这样解决您的问题
builder.Register(c => new HttpClient()).As<HttpClient>();
阅读以下链接以更好地了解