创建派生控件

时间:2008-10-31 14:25:27

标签: c# .net-3.5 inheritance

我有一个从UserControl继承的抽象基类,然后用它来派生出许多类。

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

因此(抽象)基类上有许多控件,将为所有子项共享。在创建子类的实例时,首先调用基础构造函数,但是有没有办法优雅地调用派生的InitializeComponent(),而无需为每个派生类有效地构建相同的构造函数

public DerivedClass() { 
  InitializeComponent();
}

我想知道是否有更有效的方法而不是在每个Derived类中重复自己?

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

Derived.InitializeComponent(); 

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

2 个答案:

答案 0 :(得分:1)

public DerivedClass():base() {}

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

答案 1 :(得分:0)

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