给定一个我无法更改的超类,它定义了某个属性,我最好如何在子类中设置它的默认值?
例如,假设我正在子类System.Windows.Forms.ToolStripButton
化并希望为该Text
属性设置一个默认值。(对于更复杂的示例,我还想定义点击处理程序,例如
Click += new EventHandler(click)
。)我最好如何做到这一点?
我有的一些想法:
在构造函数中设置它。但是有多个构造函数,这可行吗?(我还没有完全掌握构造函数是如何相互配合的。我可以只更新一个并让它们全部为 Just Work™ 吗?)
将其设置为字段,即
public string Text = "foo";
如我所料,这是行不通的。总是调用某个方法来设置这些值(我可能会命名它,例如,
InitializeComponent
)。
理想情况下,我将进一步对此类进行子类化,并希望在其中定义默认值。我想对于那方面我会有受保护的字段并让构造函数或方法读取这些值并分配它们。
还有其他我没有想到的方法吗?
或者我的设计似乎不正确?我还可以使用不同的类并在其中使用一个ToolStripButton
实例——聚合而不是继承。(我想得越多,就越觉得这可能是正确的答案。)
这是我确切知道如何在 Python 中做的事情,但在 C# 中看起来不太优雅(我知道:不同风格的语言、权衡等;我不是在批评 C#)。