2017-01-11 4 views
-2

オブジェクトを「グローバルに」利用できるようにするためのトリックやデザインパターンなどの普遍的な方法があるので、アプリケーションから必要に応じてオブジェクトにアクセスできるようにアプリケーションの読み込みプロセスがロードされます(コンソールなどのデスクトップアプリケーションやMVCなどのWebアプリケーションであるかどうかは関係ありません)どこからでもオブジェクトにグローバルにアクセスする

私は基本的な起動方法で初期化できるものを基本的に探しています。それぞれのメソッドに渡すことなく、そのメソッドを使用することができ、初期化された状態とプロパティは保持されます。

+0

確かに 'public static class Globals {public static object EvilGlobal {get; set;}} 'そして、どこからでも' Globals.EvilGlobal'にアクセスできます。 – Blorgbeard

+0

私はあなたがオブジェクトを静的にすることを考えていると信じています:https://msdn.microsoft.com/en-us/library/98f28cdx.aspx –

+1

アプリのタイプ(web/console/whatever)に応じてさまざまなオプションがあります。これはほとんど常に反パターンです。 – DavidG

答えて

3

を探していると思うが、これはXY Problemようになります。実際にグローバル変数を実行するのではなく、スタックオーバーフローのほとんどの人が気にする必要はない、私は正しい解決策はIoC/DIを使うことだと思います。私はAutofacを使用することを好みます(所属はなく、DIフレームワークはたくさんあります)。これにより、各オブジェクトは、適切に機能するために使用する必要があるオブジェクトを単純に(コンストラクタインジェクションまたはプロパティインジェクションの推奨されないアプローチによって)要求することができます。これにより結合が減少し、コードのテスト(単体テスト)に役立ちます。

1

私は私のコメントで述べたように、あなたがSingletonパターン

https://msdn.microsoft.com/en-us/library/ff650316.aspx

+2

これは速くて汚い修正かもしれませんが、問題はそれを使って状態を維持することを言います。シングルトンパターンが状態を格納するために使われるとき、あなたが本当に得ているのは、変装のグローバル変数です。これは、推奨するものよりもアンチパターンに似ています。 –

関連する問題