【问题标题】:Overriding default property values in .Net, WinForms覆盖 .Net、WinForms 中的默认属性值
【发布时间】:2011-01-03 05:25:46
【问题描述】:

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

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

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

  1. 如果我使用 'DefaultValue' 属性实现了属性,并使其可覆盖,则可以使用新值覆盖该属性。 这样做的问题是,没有办法只使属性可覆盖,而不是整个属性。

  2. 我可以使用受保护的 Reset'PropertyName' 和 ShouldSerialize'PropertyName' 方法来实现每个属性。 但是,这有点让人头疼。

一般来说,确保重写您的基类的人能够更改属性的默认值是一个重要的考虑因素吗?

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多