每个请求类型的autofac单个实例

时间:2017-01-20 07:09:15

标签: c# asp.net asp.net-web-api autofac

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

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

任何帮助将不胜感激。

1 个答案:

答案 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();

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

相关问题