我有许多服务,需要使用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?