Является ли использование статического свойства в форме плохой практикой, зная, что существует только один экземпляр формы?
В сложной форме у меня есть свойство под названием Readonly
это определяет, все ли редактируемые или нет. До сих пор я передаю это свойство каждому подчиненному элементу управления в этой форме с помощью конструктора, а в других местах я получаю доступ к самой форме, чтобы получить значение.
Но это быстро становится слишком сложным.
Я подумываю сделать это свойство статическим в форме, зная, что в приложении есть только один экземпляр этой формы.
Можно ли использовать это свойство как статическое в этом случае? Или это плохая практика, даже если есть только один экземпляр формы.
3 ответа
Просто спросите себя: относится ли это к форме или к типу формы. Гипотетически, если бы существовало более одной формы - все ли они были бы доступны для чтения / не одновременно? Или это будет по форме?
Тогда: у вас есть ответ. Я подозреваю, что это должен быть экземпляр (нестатический).
Даже если у вас есть единственный экземпляр формы с использованием статического поля, это не делает его безопасным. Вы можете иметь несколько потоков, которые вызывают проблемы. Не говоря уже о сложности модульного тестирования вашего приложения. Лично я стараюсь максимально избегать статических полей.
Вот альтернативное решение:
- Добавьте элементы управления в форму как обычно
- Создайте интерфейс под названием
IReadOnlyToggable
который имеетIsReadOnly
свойство и пусть форма реализует его. - Добавьте следующее свойство в свои пользовательские элементы управления:
код:
public bool IsFormReadOnly
{
get
{
var form = ParentForm as IReadOnlyToggable;
return form != null && form.IsReadOnly;
}
}