Является ли использование статического свойства в форме плохой практикой, зная, что существует только один экземпляр формы?

В сложной форме у меня есть свойство под названием Readonly это определяет, все ли редактируемые или нет. До сих пор я передаю это свойство каждому подчиненному элементу управления в этой форме с помощью конструктора, а в других местах я получаю доступ к самой форме, чтобы получить значение.

Но это быстро становится слишком сложным.
Я подумываю сделать это свойство статическим в форме, зная, что в приложении есть только один экземпляр этой формы.

Можно ли использовать это свойство как статическое в этом случае? Или это плохая практика, даже если есть только один экземпляр формы.

3 ответа

Решение

Просто спросите себя: относится ли это к форме или к типу формы. Гипотетически, если бы существовало более одной формы - все ли они были бы доступны для чтения / не одновременно? Или это будет по форме?

Тогда: у вас есть ответ. Я подозреваю, что это должен быть экземпляр (нестатический).

Даже если у вас есть единственный экземпляр формы с использованием статического поля, это не делает его безопасным. Вы можете иметь несколько потоков, которые вызывают проблемы. Не говоря уже о сложности модульного тестирования вашего приложения. Лично я стараюсь максимально избегать статических полей.

Вот альтернативное решение:

  1. Добавьте элементы управления в форму как обычно
  2. Создайте интерфейс под названием IReadOnlyToggable который имеет IsReadOnly свойство и пусть форма реализует его.
  3. Добавьте следующее свойство в свои пользовательские элементы управления:

код:

public bool IsFormReadOnly
{
    get 
    {
        var form  = ParentForm as IReadOnlyToggable;
        return form != null && form.IsReadOnly;
    }
}
Другие вопросы по тегам