如何使用Autofac在同一接口的多个实现之间进行选择?

时间:2019-02-06 22:51:52

标签: c# autofac

我正在使用的WebApi可以被不同的凭据使用。 下面的行是我尝试在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>();

0 个答案:

没有答案