カスタムprofileProviderを実際に使用して、カスタムデータベースに格納されている単一のユーザーに関連する情報(最後にアクセスしたページ、グリッドに表示するレコードの最大数、メールによる通知など)を取得するASP.NETMVCサイトを開発しています。 。profileProviderは簡単に注入できないため、この手法は好きではありません。プロファイルプロバイダーによって公開されているのと同じ機能を取得する別の方法はありますか?おそらくasp.netモジュールを使用することは可能だと思いますが、私は専門家ではありません。
2 に答える
tartafeの意味は、プロバイダー(およびカスタムProfileProvider)が外部コード(System.Web.Configuration.ProvidersHelper)によってインスタンス化および制御されることだと思います。
依存性注入パターンは、カスタムプロバイダーが依存するオブジェクトはすべて、コントローラー(またはコンテナー)によって渡される必要があることを示しています。Cfr。緩い結合のための依存性注入)。通常、コントローラーはリポジトリ、データコンテキスト、またはその他のオブジェクトを初期化し、コンストラクターまたはプロパティを介して渡します。ただし、カスタムプロバイダーでは、その「コントローラー」がSystem.Web.Configurationで封印されているため、これは不可能です。
質問は次のようになると思います。ProvidersHelperがカスタムプロバイダーをインスタンス化および制御する方法に影響を与える方法はありますか?
簡単に注射できないとはどういう意味ですか?
コントローラに表示したくないという意味の場合は、データを表示するために必要なユーザー情報のモデルを追加するアクションフィルタを作成します。
プロファイル情報を使用している場所にSystem.Webの依存関係が必要ない場合は、のようなアダプターインターフェイスを作成IProfileService
し、プロファイルプロバイダーラッパーを使用して実装します。
私が推測した2つのことのどちらも意味しない場合は、言語が少し不明確なので、説明してみてください。