2017-04-20 16 views
-4

私はWPF C#でソフトウェアを開発しています。私のソフトウェアには複数のウィンドウがあります。私は複数のウィンドウ(私はレガシーコードを使用しているので、私はそのオブジェクトを静的にすることはできません)上のオブジェクトの同じインスタンスを共有する必要があります。複数のウィンドウ間で共有する必要のある変数を持つ静的クラスを持つことをお勧めします。そのため、コンストラクタに渡すのを避けることができます。ありがとうございます複数のWindowsにまたがる共有変数の静的クラス

+0

'いいですか?いいえ、しかし、依存関係注入を使用して、アプリケーション全体で1つのインスタンスを共有することができます。それはもっと理想的です。なぜあなたはそれらをコンストラクタに渡すのを避けたいのですか? – Jonesopolis

+1

適切なMVVMモデルに従っている場合、異なるウィンドウは同じデータコンテキストを共有するので、統計情報は必要ありません – MikeT

+0

すべてのウィンドウが必ずしも同じDataContextを共有するとは限りません。これは、すべてのウィンドウ/ビューに対して1つの巨大なビューモデルがあることを意味しますか? – mm8

答えて

1

静的クラスを使用するか、同じシングルトンインスタンスを持つすべてのウィンドウ/ビューモデルを挿入できます。これは必ずしもシングルトンのデザインパターンを実際に実装するクラスである必要はありませんが、ウィンドウ/ビューモデルに非常に同じインスタンスを挿入する必要があります。

主に静的ではない共有クラスが実装を簡単に置き換えることができるため、クラスの単体テストをより簡単に行うことができるため、後者のアプローチが優先されます。

少なくとも一般的なケースでは、グローバルな静的クラスを使用することは実際には良い習慣ではありませんが、これはあなたの特定のシナリオではまだ有効です。

+0

シングルトンを使用する理由は、とにかくそれを注入するときですか?シングルトンでなくても、クラスの通常のインスタンスを挿入することもできます。 (downvoter btw ...ではない) – nvoigt

+0

それでは、両方のウィンドウが独自のインスタンスを持っているので、データはウィンドウ/ビューモデル間で共有されません。 – mm8

+0

それはなぜでしょうか?あなたはシングルトンパターンの近くに行くことなく、同じインスタンスを注入することができます。 – nvoigt

関連する問題