C# “如何避免错误”;类型为'的构造函数;MyType';“未找到”;继承基类时
我有一个VisualStudio2010 Windows窗体应用程序,其中包含一个其他类将继承的窗体基类。基类的构造函数接受子类将传递给基类的参数 例如:C# “如何避免错误”;类型为'的构造函数;MyType';“未找到”;继承基类时,c#,visual-studio-2010,inheritance,windows-forms-designer,base-class,C#,Visual Studio 2010,Inheritance,Windows Forms Designer,Base Class,我有一个VisualStudio2010 Windows窗体应用程序,其中包含一个其他类将继承的窗体基类。基类的构造函数接受子类将传递给基类的参数 例如: public partial class BaseForm : Form { public BaseForm(int number) { InitializeComponent(); } } public partial class ChildForm : BaseForm { public
public partial class BaseForm : Form
{
public BaseForm(int number)
{
InitializeComponent();
}
}
public partial class ChildForm : BaseForm
{
public ChildForm(int number)
: base(number)
{
InitializeComponent();
}
}
我遇到的问题是,当我尝试在VisualStudio的设计视图模式下打开子窗体时,我收到以下错误:
找不到类型为“MyProject.BaseForm”的构造函数
注意:不管出现什么错误,项目都会编译并运行良好
如果使用不包含任何参数的构造函数重载构造函数,则可以避免错误
示例:(这将消除错误)
我的问题是,如何创建一个不包含无参数构造函数的基类并避免设计视图错误?这是完全不可能的 在设计视图中看到的表单是基类的实际实例。
如果没有默认构造函数,则设计器无法创建该实例
您可以使用
[过时(“仅设计器”,true)]
标记构造函数,并使其在不在设计器中调用时抛出异常,以防止其他人调用它。您需要在项目的属性中调整基形输出类型,将输出类型从Windows应用程序更改为类库
参考:
所需的无参数实例构造函数是否可以是
private
?@JeppeStigNielsen-是。这就是我最后做的,一切都很好。确保编译基类所在的项目,如果与继承的类不同的话。
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();
}
}