Jedność Zarejestruj się dla jednego interfejsu Wiele obiektów i Powiedz jedność Gdzie je wstrzyknąć

Cześć Mam problemy z powiedzeniem Unity, że dla interfejsu, jeśli ma wiele implementacji, chcę, aby wstrzyknął je w różnych klasach. Oto, co mam na myśli:

Powiedzmy, że mam interfejsIProductCatalogService i dwie implementacjeProductCatalog : IProductCatalogService iProductCatalogService : IProductCatalogService.

Jak mógłbym powiedzieć Unity, że dla klasy A, którą chcę w moim konstruktorze, przekazałem instancję typuProductCatalog i dla klasyB Chcę instancjiProductCatalogService.

Używam Unity w projekcie ASP.NET Web API i ustawiłem resolver wGLobalConfiguration.

W przypadku prostych rejestracji od 1 do 1 wszystko działa.

Oto, co próbowałem, ale wydaje się, że nie działa:

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)));
    }
}

wDependencyServiceModel, From to jest interfejsTo jest obiektem, którego chcę utworzyć instancję iForClasses są typem, dla którego chcę użyćTo Obiekt.

questionAnswers(1)

yourAnswerToTheQuestion