嗨,我一直无法告诉 Unity 对于一个接口,如果它有多个实现,我希望它将它们注入到不同的类中。这就是我的意思:
假设我有一个接口IProductCatalogService
和两个实现
ProductCatalog : IProductCatalogService
,并且ProductCatalogService : IProductCatalogService
.
我将如何告诉 Unity 对于 Class AI 想要在我的构造函数中传递一个类型的实例,ProductCatalog
而对于 ClassB
我想要一个ProductCatalogService
.
我在 ASP.NET Web API 项目中使用 Unity,并且在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
对象的类型。