1

我有一个抽象基类,它继承自然UserControl后用于派生许多类。

我遇到的问题是如何优雅地确保InitializeComponent()为每一层类调用生成的函数。

因此(抽象)基类上有许多控件,这些控件将为所有子类共享。创建子类的实例时,首先调用基构造函数,但是有什么方法可以优雅地调用派生InitializeComponent(),而不必为每个派生类有效地构建相同的构造函数

public DerivedClass() { 
  InitializeComponent();
}

我想知道是否有比在每个派生类中重复自己更有效的方法?

实际上,我希望(抽象)基类能够调用

Derived.InitializeComponent(); 

毕竟,当它在基本构造函数中(在调试中)时,它知道它是一个派生实例......

4

2 回答 2

1

公共 DerivedClass() : base() {}

这将调用您的基本构造函数,通常没有神奇的方法来做事,如果您需要调用 InitializeComponents,您可能必须自己调用它。

于 2008-10-31T14:37:17.757 回答
0

如果您将 InitializeComponent 设为虚拟,并为所有子类覆盖它,则如果您从派生构造函数调用基构造函数,则基类将为每个子类调用正确的方法。

于 2008-10-31T14:42:58.477 回答