Как внедрить правильный экземпляр одного типа в другой класс - PullRequest
0 голосов
/ 26 мая 2020

У меня есть два типизированных HttpClients , которым вводится класс конфигурации:

public class MyConfig
{
    prop string Prop { get; set; }
}

public class MyConfig2
{
    prop string Prop { get; set; }
}

public class HttpClientService
{
    public HttpClientCoreService(HttpClient client, IOptions<MyConfig> config)
    {
    }
}

public class HttpClientService2
{
    public HttpClientCoreService2(HttpClient client, IOptions<MyConfig2> config)
    {
    }
}

Как вы можете видеть, классы в основном идентичны, только конфигурация нет.

services.Configure<MyConfig>(x =>
{
    x.Prop = "x";
}

services.Configure<MyConfig2(x =>
{
    x.Prop = "y";
}

services.AddHttpClient<HttpClientService>();
services.AddHttpClient<HttpClientService2>();

Я хотел бы иметь только одну конфигурацию и одну службу, но поэтому мне нужно, чтобы произошло какое-то DI magi c (если возможно). Мне как-то нужно сообщить DI, какая версия MyConfig должна быть введена для указанного c экземпляра HttpClientService (это должно быть возможно, если я использую именованные HttpClients).

Возможно ли это?

...