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

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

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

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

Ответы [ 3 ]

4 голосов
/ 03 сентября 2011

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

3 голосов
/ 03 сентября 2011

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

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

1 голос
/ 03 сентября 2011

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

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

Код:

public bool IsFormReadOnly
{
    get 
    {
        var form  = ParentForm as IReadOnlyToggable;
        return form != null && form.IsReadOnly;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...