如何在具有ASP.NET MVC中的构造函数的依赖项注入中注册服务

时间:2020-01-18 09:16:11

标签: c# asp.net-mvc dependency-injection httpclient autofac

我有服务类及其接口,名为:

IBusApi, BusApi

这样我就可以轻松地在Autofac中注册

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

但是现在我有了该服务的构造函数,该构造函数可以注入HttpClient

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

如何在DI中注册该服务?

考虑到它具有构造函数

2 个答案:

答案 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>();

阅读以下链接以更好地了解