如何避免错误“构造函数型‘的MyType’找不到”继承基类时(How to avoid error

2019-09-01 16:25发布

我有一个Visual Studio 2010和的Windows窗体应用程序,它包括一个表单基类,其他类将继承。 基类的构造函数需要一个参数,该子类将传递给基类。

例:

public partial class BaseForm : Form
{
    public BaseForm(int number)
    {
        InitializeComponent();
    }
}

public partial class ChildForm : BaseForm
{
    public ChildForm(int number)
        : base(number)
    {
        InitializeComponent();
    }
}

我快到的问题是,当我尝试打开在VisualStudio中的设计视图模式,我收到以下错误ChildForm:

上式'MyProject.BaseForm的构造函数没有找到。

注意:无论是错误的,该项目编译并运行良好。

我能避免错误,如果我重载构造一个不包含任何参数。

例如:(这摆脱了错误的)

public partial class BaseForm : Form
{
    public BaseForm(int number)
    {
        InitializeComponent();
    }

    public BaseForm()
    {
        InitializeComponent();
    }
}

public partial class ChildForm : BaseForm
{
    public ChildForm(int number)
        : base(number)
    {
        InitializeComponent();
    }
}

我的问题是,如何创建一个基类,不包括参数的构造函数,避免了设计视图错误?

Answer 1:

这是完全不可能的。

您在设计视图中看到的形式是你的基类的实际实例。
如果没有默认构造函数,设计者不能创建实例。

您可以标记与构造[Obsolete("Designer only", true)] ,并使其抛出一个异常,如果调用时没有在设计,以防止其他人调用它。



文章来源: How to avoid error “Constructor on type 'MyType' not found” when inheriting a base class