Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何注册从属服务_C#_Asp.net Mvc_Inversion Of Control - Fatal编程技术网

C# 如何注册从属服务

C# 如何注册从属服务,c#,asp.net-mvc,inversion-of-control,C#,Asp.net Mvc,Inversion Of Control,我注册HttpClient,如下所示: services.AddSingleton<HttpClient>(); services.AddSingleton(); 接下来,在代码中,我想注册另一个依赖于此的接口: services.AddSingleton<IMyRepository>( new MyRepository("<string>", "<string>", "<string>",

我注册HttpClient,如下所示:

services.AddSingleton<HttpClient>();
services.AddSingleton();
接下来,在代码中,我想注册另一个依赖于此的接口:

services.AddSingleton<IMyRepository>(
    new MyRepository("<string>",
        "<string>",
        "<string>",
        ???,
        logger));
services.AddSingleton(
新建MyRepository(“,
"",
"",
???,
),;
所以我不知道该放什么???。我可以使用“new HttpClient()”,但这样做违背了注册HttpClient的目的。我基本上需要调用的方法来获取已经添加的引用。想法


谢谢。

请从服务提供商处解决此问题:

services.AddSingleton<IMyRepository>(serviceProvider =>
    new MyRepository("<string>",
        "<string>",
        "<string>",
        serviceProvider.GetRequiredService<HttpClient>(),
        logger));
services.AddSingleton(serviceProvider=>
新建MyRepository(“,
"",
"",
serviceProvider.GetRequiredService(),
),;
顺便说一下,您可能希望使用HttpClientFactory(
services.AddHttpClient();
)而不是
services.AddSingleton()


有关长寿命静态(或单例)HttpClient出现的DNS问题以及为什么应使用HttpClientFactory的信息,请参阅。

从服务提供商处解决此问题:

services.AddSingleton<IMyRepository>(serviceProvider =>
    new MyRepository("<string>",
        "<string>",
        "<string>",
        serviceProvider.GetRequiredService<HttpClient>(),
        logger));
services.AddSingleton(serviceProvider=>
新建MyRepository(“,
"",
"",
serviceProvider.GetRequiredService(),
),;
顺便说一下,您可能希望使用HttpClientFactory(
services.AddHttpClient();
)而不是
services.AddSingleton()


有关长寿命静态(或单例)HttpClient出现的DNS问题以及为什么应使用HttpClientFactory的信息,请参阅。

var HttpClient=new HttpClient();服务。AddSingleton(httpClient);AddSingleton(新的MyRepository(“,”,“,”,httpClient,logger))
var httpClient=new httpClient();服务。AddSingleton(httpClient);AddSingleton(新的MyRepository(“,”,“,”,httpClient,logger))?我收到一条错误消息-“IServiceCollection”不包含“AddHttpClient”的定义@KevinBurton啊,您可能必须安装
Microsoft.Extensions.Http
NuGet软件包才能使用HttpClientFactory。我收到一条错误消息-“IServiceCollection”不包含“AddHttpClient”的定义@KevinBurton啊,您可能必须安装
Microsoft.Extensions.Http
NuGet软件包才能使用HttpClientFactory。