【发布时间】:2021-03-30 00:30:44
【问题描述】:
我正在将 .net 框架转换为 .net 5.0,并使用 .net 5.0 中的内置依赖注入,而不是我在 .net 框架中使用的 Ninject 库。
我有以下构造函数,它接受一个 messageHandler(通过依赖注入)以及一个 Web 服务根地址:
(旧)1.
public ApiConnection(HttpMessageHandler messageHandler, string webServiceRootAddress)
这是.net框架中通过ninject进行依赖注入的设置:
(旧)2.
kernel.Bind<IApiConnection>().To<ApiConnection>().InSingletonScope()
.WithConstructorArgument(
"webServiceRootAddress",
ConfigurationManager.AppSettings["webServiceRootAddress"]);
(旧)3.
kernel.Bind<HttpMessageHandler>().To<HttpClientHandler>();
我想在启动文件中.net 5的内置依赖注入中设置上述内容。
我目前有以下:
(新的不起作用)4.
services.AddSingleton<IApiConnection, ApiConnection>(s =>
new ApiConnection(Configuration.GetSection("Address")
.GetSection("webServiceRootAddress").Value));
(新)5.
services.AddScoped<HttpMessageHandler, HttpClientHandler>();
但是上面期望 2 个参数被传递给构造函数。此处如何定义只传入一个构造函数参数,因为 HttpMessageHandler 参数将通过依赖注入(第 5 行)传入。
【问题讨论】:
标签: c# asp.net .net dependency-injection