我在asp.net Web API 2项目中具有以下c#类:
WebService1依赖于IHttpClientWrapper
WebService2依赖于IHttpClientWrapper

我该如何注册autofac,以便每次解析webService1时都得到相同的HttpClientWrapper实例,而webService2得到相同的HttpClientWrapper实例。但是,HttpClientWrapper的每个单个实例仅在具有相同类型的类型对象之间共享。

任何帮助,将不胜感激。

最佳答案

我了解您尝试使用“每个依赖项单个实例”。

Autofac中没有开箱即用的此类功能,但可以这样做,例如具有以下建议:

builder.RegisterType<HttpClientWrapper>().Named<IHttpClientWrapper>("WebService1").SingleInstance();
builder.RegisterType<HttpClientWrapper>().Named<IHttpClientWrapper>("WebService2").SingleInstance();

builder.Register(c => new WebService1(c.ResolveNamed<IHttpClientWrapper>("WebService1"))).InstancePerLifetimeScope();
builder.Register(c => new WebService2(c.ResolveNamed<IHttpClientWrapper>("WebService2"))).InstancePerLifetimeScope();


现在,每次解析或注入WebService1WebService2时,每个WebService都会得到相同的IHttpClientWrapper实例。

08-07 09:58