Единство регистрации для одного интерфейса нескольких объектов и сообщить Unity, где их вводить
Привет, у меня возникли проблемы при попытке сказать Unity, что для интерфейса, если у него есть несколько реализаций, я хочу, чтобы он вставлял их в разные классы. Вот что я имею в виду:
Допустим, у меня есть интерфейсIProductCatalogService
и две реализацииProductCatalog : IProductCatalogService
а такжеProductCatalogService : IProductCatalogService
.
Как бы я сказал Unity, что для класса A я хочу, чтобы в моем конструкторе был передан экземпляр типаProductCatalog
и для классаB
Я хочу экземплярProductCatalogService
.
Я использую Unity в проекте ASP.NET Web API, и я установил преобразователь вGLobalConfiguration
.
Для простой регистрации 1 к 1 все работает.
Вот что я пробовал, но это не похоже на работу:
public class DependencyServiceModel
{
public Type From { get; set; }
public Type To { get; set; }
public IEnumerable<Type> ForClasses { get; set; }
}
public void RegisterTypeForSpecificClasses(DependencyServiceModel dependencyService)
{
foreach (var forClass in dependencyService.ForClasses)
{
string uniquename = Guid.NewGuid().ToString();
Container.RegisterType(dependencyService.From,
dependencyService.To, uniquename);
Container.RegisterType(forClass, uniquename,
new InjectionConstructor(
new ResolvedParameter(dependencyService.To)));
}
}
вDependencyServiceModel
, From
это интерфейс,To
это объект для ведьмы, который я хочу создать иForClasses
Тип, для которого я хочу использоватьTo
Объект.