У меня есть проект WinForms, который использует много пользовательских элементов управления. Некоторые из этих пользовательских элементов управления используют классы из уровня бизнес-логики. Эти классы в основном выполняют операции CRUD с базой данных (через уровень доступа к данным), а также выполняют некоторые дополнительные проверки и отчеты.
В проекте используются некоторые общие объекты (зарегистрированный пользователь, некоторые контроллеры и валидаторы), которые создаются в основной форме и затем внедряются в дочерние элементы управления с помощью методов инициализации или открытых свойств. Это означает, что у меня много кода, который просто передает эти общие объекты из родительского контроля в дочерние.
Чтобы избежать этого, я мог бы создать статический класс (например, ApplicationContext) и сохранить в нем все общие элементы управления. Это может произойти в основной форме, и все другие пользовательские элементы управления или формы в проекте могут использовать его.
Я вижу, что этот шаблон вообще не рекомендуется (хранение некоторых глобальных данных в статических классах). Но что, если эти данные неизменны? Является ли этот подход хорошей идеей?
Или вы знаете какой-нибудь другой подход, который мог бы помочь мне избавиться от всего кода инициализации?