Autofac无法解析可枚举的类型HttpClients

时间:2018-09-12 08:51:22

标签: autofac httpclientfactory

我有许多服务,需要使用HttpClientFactory中键入的HttpClient。 尽管我可以解析一项服务,但我无法解析该服务的IEnumerable。

interface IMyHttpClient
{
}

class MyHttpClient: IMyHttpClient
{
    public MyHttpClient(HttpClient client)
    {
    }
}

class Program
{
    static void Main(string[] args)
    {
        var services = new ServiceCollection();
        services.AddHttpClient()
                .AddHttpClient<IMyHttpClient, MyHttpClient>();

        var builder = new ContainerBuilder();
        // Exception goes away when remove this line
        builder.RegisterType<MyHttpClient>().As<IMyHttpClient>();
        builder.Populate(services);
        var provider = builder.Build();

        // ============== This works
        // provider.Resolve<IMyHttpClient>();

        // ============== This throws exception
        provider.Resolve<IEnumerable<IMyHttpClient>>();
    }
}

构造函数将被调用一次,然后抛出异常:

``` DependencyResolutionException:在类型为'ConsoleApp2.MyHttpClient'的'Autofac.Core.Activators.Reflection.DefaultConstructorFinder'中找不到任何构造函数,都不能使用可用的服务和参数来调用: 无法解析构造函数“ Void .ctor(System.Net.Http.HttpClient)”的参数“ System.Net.Http.HttpClient客户端”。

```

问题是AddHttpClient添加了它自己的IMyHttpClient注册。但是我只想使用Autofac进行注册!有没有办法使用类型化的客户端,但仍然使用Autofac?

0 个答案:

没有答案