アプリケーションにログインしたユーザーが複数のクラスにまたがってデータを共有した後にユーザー情報を保持したいとします。静的クラス内にユーザー情報を格納する
通常私は静的クラスのプロパティで、このようなものを維持:
public User CurrentUser { get; set; }
あなたの考えは何ですか?
ありがとうございます。
WPFでアプリケーションにログインしたユーザーが複数のクラスにまたがってデータを共有した後にユーザー情報を保持したいとします。静的クラス内にユーザー情報を格納する
通常私は静的クラスのプロパティで、このようなものを維持:
public User CurrentUser { get; set; }
あなたの考えは何ですか?
ありがとうございます。
WPFで:
// You can use your Application.Current.Resources dictionary to store the
// current logged-in user info.
Application.Current.Resources["UserInfo"] = userInfo;
は、その後、あなたのアプリケーション内の任意の場所に現在のユーザ情報オブジェクトを取得することができます。あなたは現在ログイン中のユーザーに関する必要な情報がすべて含まれていUserInfo
と呼ばれるクラスを持っている想像してみて次のコードで:
var userInfo = Application.Current.Resources["UserInfo"] as UserInfo;
良い点だと思いますが、シングルトンを実装する方法ではなく、シングルトンを使用すべきかどうかという疑問があります。しかし、WPFでは、これはXAMLのUserInfoにバインドできるので、これを行うには良い方法だと思います。 +1 – ColinE
私は通常、テスト容易性の問題からシングルトンクラスの使用を避けます。さらに、コードの複雑さが増します。私の意見では、Application.Resources辞書オブジェクトの使用は簡単で簡単です+それはテスト可能です:D –
あなたが提案している何singleton内のユーザ情報を格納することです。これは、よくデスクトップアプリケーションでよく使用されるよく知られているパターンです。テスト容易性は、インターフェイスを介して公開されていないシングルトンを持っている場合、それは可能ではない、
デスクトップアプリケーション内では、問題の可能性が高いのは、最初のテスト容易性だけです。その場合、IUser
インターフェースを定義するだけで良いです。
要約すると、はい、これは問題ありません。私はこのパターンを過去何度も使ってきました。
どのようなアプリですか? WinForms? ASP.NET? WPF? –
申し訳ありませんが、私はそれを指定していない、投稿を編集しました。 – saber
@ChrisShain私はタグを編集しました – saber