Переопределение значений свойств по умолчанию в .Net, WinForms - PullRequest
0 голосов
/ 09 января 2010

Допустим, я создаю класс "Планета", который может наследоваться. Одной из целей наследования является создание шаблона с различными значениями свойств по умолчанию. Например:

Public Sub New
    MyBase.New
    MyBase.ForeColor = Red
    MyBase.Name = "Mars"
    etc.
End Sub

Теперь, чтобы остановить сериализацию по умолчанию в методе InitializeComponent, есть 2 способа:

  1. Если я реализовал свойства с помощью атрибута DefaultValue и сделал их перезаписываемыми, атрибут можно переопределить новым значением. Проблема в том, что невозможно просто переопределить атрибуты, в отличие от всего свойства.

  2. Я мог бы реализовать каждое свойство с помощью защищенных методов Reset'PropertyName 'и ShouldSerialize'PropertyName'. Тем не менее, это немного боли в заднице.

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

1 Ответ

1 голос
/ 09 января 2010

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

Руководство для этого доступно от реализации WF. Это редко делает это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...