我有一个Visual Studio 2010 Windows窗体应用程序,其中包含其他类将继承的Form基类。基类的构造函数采用一个参数,子类将将该参数传递给基类。
示例:
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();
}
}
我的问题是,如何创建不包含无参数构造函数的基类并避免“设计视图”错误?
这完全不可能。
您在设计视图中看到的表单是基类的实际实例。如果没有默认构造函数,则设计器无法创建该实例。
[您可以用[Obsolete("Designer only", true)]
标记构造函数,如果在设计器中未调用它,则使它抛出异常,以防止其他人调用它。
您需要调整BaseForm输出类型,在项目的属性中,将输出类型从Windows应用程序更改为类库。