C#:从构造函数中调用虚方法;建议?

时间:2009-11-19 10:09:01

标签: c# asp.net oop

在out程序中,我们有以下类层次结构:

public class PagePanelBase: UserControl
public sealed class CameraParameters: PagePanelBase

CameraParameters会覆盖BackColor属性,设置它包含的某些组件的背景颜色。如果从PagePanelBase构造函数(从那里调用InitializeComponent)设置BackColor,则尚未调用CameraParameters构造函数,因此我们得到一个空指针解引用 - 标准“不从构造函数调用虚方法”问题。

现在我们如何解决这个问题?我们需要使用这个层次结构,我们需要设置基类的背景颜色。目前,每个派生类都使用在InitializeComponent中设置的布尔变量“isInitialized”,并且每个重写的方法在执行任何操作之前必要时调用InitializeComponent。有没有更好的方法呢?代码中已经有足够的窗口了......

2 个答案:

答案 0 :(得分:2)

您可以在事件处理程序中设置背景颜色,例如ONLOAD?

答案 1 :(得分:-1)

您是否尝试过抽象方法而不是虚拟方法?不幸的是,它在你的整体层次结构中不起作用,但值得考虑。