c# - 继承基类时如何避免错误 "Constructor on type ' MyType'not found”

标签 c# visual-studio-2010 inheritance windows-forms-designer base-class

我有一个 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 的设计 View 模式下打开 ChildForm 时,我收到以下错误:

Constructor on type 'MyProject.BaseForm' not found.

注意:无论错误如何,项目都能正常编译和运行。

如果我用不包含任何参数的构造函数重载构造函数,我可以避免错误。

示例:(这消除了错误)

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();
    }
}

我的问题是,如何创建不包含无参数构造函数的基类并避免设计 View 错误?

最佳答案

那是完全不可能的。

您在设计 View 中看到的表单是您的基类的实际实例。
如果没有默认构造函数,设计者将无法创建该实例。

你可以用[Obsolete("Designer only", true)]标记构造器,让它在不在设计器中调用时抛出异常,以防止其他人调用它.

关于c# - 继承基类时如何避免错误 "Constructor on type ' MyType'not found”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16325992/

相关文章:

visual-studio - 什么是 Visual Studio 在做演示时使用的深色主题?

c++ - 如何使用基类的接口(interface)?

javascript - 如何继承静态方法?

c# - 类中没有泛型引用的泛型类型方法

c# - 将大量记录插入Sqlite数据库

c# - ComboBoxCell 中的自定义绘制项

visual-studio-2010 - 可用的 VS2010 修补程序列表

visual-studio-2010 - 变量 'xyz' 周围的堆栈已损坏

javascript - 为什么在 javascript 中使用基于类的 OOP 样式继承?

c# - 在 session 中使用键/值集合