初めて Unity を使用しようとしていますが、噛むことができないほど噛んでしまったのではないかと思います。いくつかの抽象型を持つ基本ライブラリと、その上に具象型を持ついくつかのビジネス シナリオ固有のライブラリを持つ n 層アプリケーションがあります。例: 抽象型リードには 2 つの実装があります。1 つは NewAutomotiveLead という名前の NewAutomotiveLibrary にあり、もう 1 つは AutomotiveFinanceLead という名前の AutomotiveFinanceLibrary にあります。基本ライブラリ内には、Lead などの基本型でロジックを実行するアダプターのセットがあります。
Unity を初めて使用してインターフェイス ILeadDuplication を返そうとしています。このインターフェイスは、解決されると NewAutomotiveLeadDuplication または AutomotiveFinanceLeadDuplication のインスタンスを返し、ILeadDuplication で resolve を呼び出し、"NewAutomotive" または "AutomotiveFinance" のいずれかの文字列値を渡します (コンテナーで RegisterType が呼び出されたときにマップされた名前)。そのようです:
using (IUnityContainer container = new UnityContainer())
{
container
.RegisterType<ILeadDuplication, AutomotiveFinanceLeadDuplication>("AutomotiveFinance")
.RegisterType<ILeadDuplication, NewAutomotiveLeadDuplication>("NewAutomotive");
ILeadDuplication dupe = container.Resolve<ILeadDuplication>("AutomotiveFinance");
Console.WriteLine(dupe.Created);
}
注: これは説明のためのものです。ライブラリは ILeadDuplication の concreate クラスについて何も知らないため、実際の登録は構成ファイルで行う必要があります。
これはすべてうまく機能しますが、さらに一歩進める必要があります。resolve を呼び出すときに、NewAutomotiveLead または AutomotiveFinanceLead の基本型である Lead 型の引数を渡すことができる必要があります。
Unity が、「GrossMonthlyIncome」などの具体的なインスタンス AutomotiveFinanceLead に固有のプロパティを魔法のように見て、それを新たに作成された AutomotiveFinanceLeadDuplication インスタンス プロパティ GrossMonthlyIncome に割り当てる可能性があるかどうかを知る必要があります。
生成されるインスタンスとマップされるプロパティがなじみのないものであっても、ベース ライブラリの ILeadDuplication のインスタンスに対して汎用的なロジック セットを実行できるようにしたいと考えています。
ありがとう!