我有两个共享很多功能的表单,因此我决定将其分解为基本的Form类。
但是,我必须更改的内容包括自动生成的System.ComponentModel.Container components
并将InitializeComponent
类转换为virtual
这样每个继承类都可以调用它的重写方法。
我在网上看到一些问题,你应该永远不要在构造函数中调用虚方法,这是有道理的,因为这个类是从base->最少继承的。
我还考虑过保留InitializeComponents
private
,但我仍然需要初始化components
,所以我至少需要protected
。
这种技术有什么缺陷我应该小心吗? (好奇心:如果我在层次结构的不同层次上有多个私有方法会反射到火焰中吗?)
简而言之,我需要为两个表格分解一个基类,以便我有这个:
class FormBase
{
protected IContainer components;
private void InitalizeComponents() {/*common stuff*/}
public FormBase()
{
InitializeComponents();
}
}
class FormA :FormBase
{
private void InitalizeComponents() {/*specialized stuff*/}
public FormA()
{
InitializeComponents();
}
}
class FormB :FormBase
{
private void InitalizeComponents() {/*specialized stuff*/}
public FormB()
{
InitializeComponents();
}
}