これは古くて疲れた質問でなければなりませんが、信頼できる友人(Googleとも呼ばれます)を通して何かを見つけることはできません。Winforms:アプリケーション全体のアクセスクラスプロパティ
私は、アプリケーション起動時にユーザーにログインフォームを提示する.net 3.5 c#winformsアプリケーションを持っています。ログインに成功した後、私はDBに逃げ出し、ユーザー固有のデータをいくつか取り出して、プロパティ内のAppCurrentUser.csというクラスに保持して、アセンブリ内のすべてのクラスにアクセスできるようにしたい - 私が必要とするたびにDBを呼び出すのではなく、一度だけ読み込んだデータでいくつかのプロパティを満たすことができます。 Webアプリケーションでは、通常セッション変数を使用しますが、その概念はWinFormsには存在しません。
クラス構造は、次のようになります。今
public class AppCurrentUser {
public AppCurrentUser() { }
public Guid UserName { get; set; }
public List<string> Roles { get; set; }
public string Firstname { get; set; }
public string Lastname { get; set; }
}
、私は上のいくつかの専門家のアドバイス必要があるいくつかのオプションがあります。「ダム」クラスなので
を、私はプロパティをしなければならない非静的、クラスをインスタンス化し、プロパティを設定します...しかし、私はそれが作成されたクラス内からそのインスタンスにアクセスすることができますか?
論理的に、私は私だけ(それの新しいインスタンスを作成し、ない)アプリケーション全体で一度クラスを使用するように、これらのプロパティは静的であることを信じて、それがプロパティの値は上の「リセット」されますアプリケーションを閉じる。
クラスをどのように構造化すればよいですか?また、アセンブリ内のすべてのクラスでそのプロパティにアクセスするにはどうすればよいですか?私は本当にこれについてあなたの正直で大切なアドバイスを感謝します!
ありがとうございます!
こんにちは!返信いただきありがとうございます!いいえ、私のBLは別のクラスにあり、UIから呼び出されます。また、静的対非静的引数で有効ですか? – Shalan
StructureMapを今読んで – Shalan
私はDIがここで過度だと言うでしょう。 Shalanはおそらく初心者であり、依存関係の注入は避けるべきです。シングルトンパターンのようなより基本的な概念が、あなたが示唆しているように、よりよく理解されるまで回避されるべきです。 – xanadont