Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# “如何避免错误”;类型为'的构造函数;MyType';“未找到”;继承基类时_C#_Visual Studio 2010_Inheritance_Windows Forms Designer_Base Class - Fatal编程技术网

C# “如何避免错误”;类型为'的构造函数;MyType';“未找到”;继承基类时

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

我有一个VisualStudio2010 Windows窗体应用程序,其中包含一个其他类将继承的窗体基类。基类的构造函数接受子类将传递给基类的参数

例如:

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