0

アプリケーション (C#) でユーザー認証と管理をサポートするモジュールを設計しようとしています。このモジュールは、他の開発者が「サード パーティ」コンポーネントとして使用する必要があるように、インフラストラクチャ アクティビティ用の DLL の一部として配布する必要があります。ここでの主なポイントは、私は UI (ユーザーのアクセス許可とセッションに依存する) を担当しておらず、使用するインフラストラクチャのみを提供するということです。

UserManagerそのため、ログイン、ログアウト、その他いくつかの機能やイベントなどのアクションを許可するシングルトン クラスを作成しました。UserManager クラスCurrentUserは、タイプがという名前のプロパティを保持しますApplicationUser

ApplicationUserユーザーの詳細(フルネーム、ユーザー名など)で作成され、IsEligibleFor(Permission)関数も提供するクラスです。

ユーザーがUserManagerインスタンスを取得し、プロパティを介して現在ログオンしているユーザーと通信する必要がありCurrentUserます。理想的な方法は、ログアウト操作が呼び出されたときに無効にし、ユーザーがログオンするたびCurrentUserに新しいを作成することです。ApplicationUserしかし、これらのクラスのユーザーは のインスタンスをキャッシュできApplicationUser、変更に気付かないため、これには問題があります。

これが、オブジェクトがまだ有効かどうかを示す ApplicationUser オブジェクトにフラグがあるソリューションに移行することを考えている理由です。しかし、これにはApplicationUserの各メソッドで有効性を確認する必要があり、私は好きではありません。

ここで見逃している何らかの解決策やパターンがあるかどうか疑問に思っていました。

4

1 に答える 1

0

オブザーバー パターンのように聞こえます。クラスはクラスを監視し、UserManagerその後、変更があるたびに通知されます。

特定の変更をリッスンできるため、シナリオでは、ApplicationUserオブジェクトがいつ変更されたかをリッスンし、古いコピーを破棄して新しいコピーをキャッシュできます。

実装に関しては、.NET を使用すると、イベントを使用して非常に簡単に実現できます。

于 2013-05-08T12:38:44.020 に答える