我有一个从UserControl
继承的抽象基类,然后用它来派生出许多类。
我遇到的问题是如何优雅地确保为每个类层调用生成的函数InitializeComponent()
。
因此(抽象)基类上有许多控件,将为所有子项共享。在创建子类的实例时,首先调用基础构造函数,但是有没有办法优雅地调用派生的InitializeComponent()
,而无需为每个派生类有效地构建相同的构造函数
public DerivedClass() {
InitializeComponent();
}
我想知道是否有更有效的方法而不是在每个Derived类中重复自己?
实际上,我希望(抽象)基类能够调用
Derived.InitializeComponent();
毕竟,当它在基础构造函数中时(在调试中)它知道它是派生实例...
答案 0 :(得分:1)
public DerivedClass():base() {}
这将调用你的基础构造函数,通常没有神奇的方法来做事,如果你需要调用InitializeComponents,你可能需要自己调用它。
答案 1 :(得分:0)
如果将InitializeComponent设为虚拟,并且为所有子类覆盖它,则如果从派生构造函数中调用基本构造函数,则基类将为每个子类调用正确的方法。