Как выбрать между несколькими реализациями одного и того же интерфейса с Autofac? - PullRequest
0 голосов
/ 07 февраля 2019

Веб-приложение, которое я использую, может использоваться различными учетными данными.Строка ниже - это место, где я пытаюсь разрешить регистрацию ICustomerWebApi.

b.ResolveKeyed<ICredentialProvider>("KeyA")
 .ServiceClientCredentials

Но иногда может потребоваться использовать нижеприведенное, в зависимости от того, где используется ICustomerWebApi.

b.ResolveKeyed<ICredentialProvider>("KeyB")
 .ServiceClientCredentials

Есть ли решение этой проблемы?

builder.RegisterType<CredentialProvider>()
       .Keyed<ICredentialProvider>("KeyA")
       .InstancePerRequest();

builder.Register(b =>
  {
    var result = new CustomerWebApi(
                   new Uri("http://sales.microsoft.com/api"),
                   b.ResolveKeyed<ICredentialProvider>("KeyA").ServiceClientCredentials);
    return result;   
  }).As<ICustomerWebApi>();
...