Unity Registra Para Uma Interface Multiple Object e Tell Unity Onde Injetá-los
Oi, eu tenho tido problemas para tentar dizer ao Unity que, para uma interface, se tiver várias implementações, quero que elas sejam injetadas em classes diferentes. Aqui está o que quero dizer:
Digamos que eu tenha uma interfaceIProductCatalogService
e duas implementaçõesProductCatalog : IProductCatalogService
eProductCatalogService : IProductCatalogService
.
Como eu poderia dizer ao Unity que para Classe A eu quero no meu construtor ter passado uma instância do tipoProductCatalog
e para a classeB
Eu quero uma instância deProductCatalogService
.
Estou usando o Unity em um projeto ASP.NET Web API e defini o resolvedor noGLobalConfiguration
.
Para simples registros de 1 para 1, tudo funciona.
Aqui está o que eu tentei, mas parece não 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)));
}
}
NoDependencyServiceModel
, From
é a interface,To
é o objeto para a bruxa que eu quero instanciar eForClasses
são o tipo para o qual eu quero usar oTo
Objeto.