これまで、カスタムメンバーシッププロバイダーへのインジェクションの可能性について読んで、それを行うための2つの可能な方法を見つけました。
1つは次のとおりです:http://bugsquash.blogspot.com/2010/11/windsor-managed-membershipproviders.html
ここで、作成者は基本的にカスタムプロバイダーを登録し、メンバーシップ用にかなり疑わしいウィンザーアダプターを用意することを提案しています(プロバイダーが取得したコンテナーを使用してプロバイダーをインスタンス化する方法はあまり好きではありません。HttpApplication
最終的にはウィンザーアダプターでラップされます。 )。
これは別の同様のオプションです:http ://code.google.com/p/webdotnet/source/browse/trunk/Steeg.Framework/Web/Security/MemberShipProvider.cs?r = 2
依存関係をオーバーライドInitialize()
して手動でインスタンス化する場合。少なくとも最初のものでは、(プロバイダー自体を除いて)手動で依存関係をインスタンス化する必要はありません。
次に、ある種のサービスロケーター(MVCまたはその他)の使用を提案するものがいくつかあります。
Membership.Provider
それから私は、のようなものでかなり簡単にプロパティへの依存関係を注入するninjectに出くわしました_kernel.Inject(Membership.Provider)
。これは私が望むものにはるかに近く、最初にDIを使用することに私を惹きつけたコンポジションルートの概念を維持しています。
Castleを使用して同様の結果を得るにはどうすればよいですか?
更新:明らかに、これにはライフサイクル管理に問題があります。 Ninjectを使用してカスタムメンバーシッププロバイダーにリポジトリを挿入します
それでは、オプション#1を選択する必要がありますか?少なくともそれで、私はプロバイダーを自分でインスタンス化します。したがって、ライフサイクル管理は問題になりません。