Допустим, я создаю класс "Планета", который может наследоваться. Одной из целей наследования является создание шаблона с различными значениями свойств по умолчанию. Например:
Public Sub New
MyBase.New
MyBase.ForeColor = Red
MyBase.Name = "Mars"
etc.
End Sub
Теперь, чтобы остановить сериализацию по умолчанию в методе InitializeComponent, есть 2 способа:
Если я реализовал свойства с помощью атрибута DefaultValue и сделал их перезаписываемыми, атрибут можно переопределить новым значением.
Проблема в том, что невозможно просто переопределить атрибуты, в отличие от всего свойства.
Я мог бы реализовать каждое свойство с помощью защищенных методов Reset'PropertyName 'и ShouldSerialize'PropertyName'.
Тем не менее, это немного боли в заднице.
Является ли это, как правило, важным соображением для обеспечения того, чтобы тот, кто переопределяет ваш базовый класс, имел возможность изменять значения свойства по умолчанию?