Let's say I create a class "Planet" that can be inherited. One of the purposes of inheriting is to create a template with different default property values. Eg:
Public Sub New
MyBase.New
MyBase.ForeColor = Red
MyBase.Name = "Mars"
etc.
End Sub
Now, to stop the defaults serializing in the InitializeComponent method, there are 2 ways:
If I've implemented the properties using the 'DefaultValue' attribute, and made them overridable, the attribute can be overriden with the new value. The problem with this is, there's no way to just make just the attributes overridable, as opposed to the whole property.
I could implement every property with protected Reset'PropertyName' and ShouldSerialize'PropertyName' methods. However, this is a bit of a pain in the arse.
Is it, generally, an important consideration to ensure that someone who overrides your base class has the ability to change the default values of a property?