Unity Registrarse para una interfaz Múltiples objetos y decirle a Unity dónde inyectarlos
Hola, he tenido problemas tratando de decirle a Unity que para una interfaz si tiene varias implementaciones, quiero que las inyecte en diferentes clases. Esto es lo que quiero decir:
Digamos que tengo una interfazIProductCatalogService
y dos implementacionesProductCatalog : IProductCatalogService
yProductCatalogService : IProductCatalogService
.
¿Cómo haría para decirle a Unity que para la Clase A que quiero en mi constructor pasó una instancia de tipoProductCatalog
y para la claseB
Quiero una instancia deProductCatalogService
.
Estoy usando Unity en un proyecto de la API web ASP.NET y he configurado la resolución en elGLobalConfiguration
.
Para registros simples 1 a 1 todo funciona.
Esto es lo que he intentado pero no parece funcionar:
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)));
}
}
En elDependencyServiceModel
, From
es la interfaz,To
Es el objeto de la bruja que quiero instanciar yForClasses
son el tipo para el que quiero usar elTo
Objeto.