多くのユーザーコントロールを使用するWinFormsプロジェクトがあります。これらのユーザーコントロールの一部は、ビジネスロジック層のクラスを使用します。これらのクラスは、主にデータベースへのCRUD操作(データアクセス層を介して)に加えて、いくつかの追加の検証とレポートを実行しています。
プロジェクトは、いくつかの一般的なオブジェクト(ログに記録されたユーザー、いくつかのコントローラー、およびバリデーター)を使用します。これらのオブジェクトは、メインフォームでインスタンス化され、初期化メソッドまたはパブリックプロパティを介して子ユーザーコントロールに挿入されます。これは、これらの共通オブジェクトを親コントロールから子コントロールに渡すだけのコードがたくさんあることを意味します。
これを回避するために、静的クラス(たとえば、ApplicationContext)を作成し、それにすべての一般的なコントロールを保存することができます。これはメインフォームで発生し、プロジェクト内の他のすべてのユーザーコントロールまたはフォームで使用できます。
このパターンは一般的に推奨されていないことがわかります(静的クラスにグローバルデータを格納する)。しかし、このデータが不変である場合はどうなるでしょうか。このアプローチはこれまでに良いアイデアですか?
または、すべての初期化コードを取り除くのに役立つ他のアプローチを知っていますか?