我在asp.net web api 2项目中有以下c#类:
WebService1
依赖于IHttpClientWrapper
WebService2
依赖于IHttpClientWrapper
如何注册autofac,以便每次webService1
解析时,它都会获得HttpClientWrapper
的同一个实例,而webService2
会获得HttpClientWrapper
的相同实例。但是,每个HttpClientWrapper实例仅在具有相同类型的类型对象之间共享。
任何帮助将不胜感激。
答案 0 :(得分:1)
我知道你试图让每个依赖的单个实例"。
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
实例。