既存のASP.NETMVCアプリケーションがあり、選択したIOCコンテナーとしてStructureMapを使用しています。現在、コントローラーにIMembershipProviderが必要な場合は、StructureMapを使用して、以下のソリューションコードのように、web.configファイルのBuyerMembershipProvider構成に基づいてコントローラーのコンストラクターに具体的なインスタンスを挿入します。
ObjectFactory.Initialize(x =>
{
x.ForRequestedType<IMembershipService>().TheDefaultIsConcreteType<AccountMembershipService>();
x.ForRequestedType<IFormsAuthentication>().TheDefaultIsConcreteType<FormsAuthenticationService>();
x.ForRequestedType<MembershipProvider>().TheDefault.IsThis(SecurityProvider.Providers["BuyerMembershipProvider"]);
});
これは正常に機能します。ただし、これは「購入者」のユーザータイプにバインドされています。売り手情報は別のデータベースに保存され、メンバーシップ情報を保存するためのさまざまなテーブルがあります。基本的に、コンテキストに基づいてBuyerMembershipProviderまたはSellerMembership Providerのいずれかを挿入できるようにし、オブジェクトファクトリの初期化に次のようにします。
x.ForRequestedType<MembershipProvider>().TheDefault.IsThis(SecurityProvider.Providers["BuyerMembershipProvider"]);
x.ForRequestedType<MembershipProvider>().TheDefault.IsThis(SecurityProvider.Providers["SellerMembershipProvider"]);
オブジェクトファクトリを初期化するときに、2つの具体的な実装のどちらかを決定することは可能ですか?
どんな助けでも大歓迎です、事前に感謝します!JP