覆盖.Net,WinForms中的默认属性值

时间:2010-01-09 09:35:30

标签: .net vb.net winforms override default-value

假设我创建了一个可以继承的“Planet”类。继承的目的之一是创建具有不同默认属性值的模板。例如:

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

现在,要停止InitializeComponent方法中的默认序列化,有两种方法:

  1. 如果我使用'DefaultValue'属性实现了属性,并使它们可以覆盖,则可以使用新值覆盖该属性。 问题是,与整个属性相反,没有办法只使属性可以覆盖。

  2. 我可以用受保护的Reset'PropertyName'和ShouldSerialize'PropertyName'方法实现每个属性。 然而,这对屁股来说有点痛苦。

  3. 通常,确保覆盖基类的人能够更改属性的默认值是一个重要的考虑因素吗?

1 个答案:

答案 0 :(得分:1)

我会说不。如果派生者甚至考虑更改默认值,则无法预先猜测。您将向您的类添加可能永远不会使用的代码。鉴于派生可以更改默认值(即使它是皮塔饼),您应该避免添加不必要的代码。

可以从WF实施中获得指导。它很少这样做。