こんにちは、インターフェイスに複数の実装がある場合、それらを異なるクラスに注入したいことを Unity に伝えるのに苦労しています。
インターフェイスIProductCatalogServiceと 2 つの実装
ProductCatalog : IProductCatalogServiceとProductCatalogService : IProductCatalogService.
ProductCatalogクラス AI の場合はコンストラクターで type のインスタンスを渡し、クラスの場合は のBインスタンスが必要であることを Unity に伝えるにはどうすればよいでしょうか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。