2017-01-20 9 views
1

У меня есть следующие классы C# в Web API asp.net 2 проекта: WebService1, который имеет зависимость от IHttpClientWrapper WebService2, который имеет зависимость от IHttpClientWrapperautofac один экземпляр на запрос типа

как я могу зарегистрировать autofac так что каждый раз, когда webService1 разрешен, он получает тот же экземпляр HttpClientWrapper и webService2 получает тот же экземпляр HttpClientWrapper. Однако каждый отдельный экземпляр HttpClientWrapper используется только для объектов типов с одним и тем же типом.

любая помощь будет оценена.

+1

Вы прочитали [документацию] (https://autofac.readthedocs.io/en/latest/lifetime/index.html)? – Steven

ответ

1

Я понимаю, что вы пытаетесь иметь «один экземпляр на зависимость».

В Autofac нет такой функциональности, но это возможно сделать, например. со следующим registartions:

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 вы получите тот же экземпляр IHttpClientWrapper на каждый WebService.