我在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();
现在,每次解析或注入
WebService1
或WebService2
时,每个WebService都会得到相同的IHttpClientWrapper
实例。