无法加载C#基类MyFrm

时间:2017-08-05 08:29:22

标签: c# generics

我有以下自定义表单(MyFrm),它继承自Form。

public class MyFrm<T>: Form where T: class 
{
}

以下是我的Form1:

 public partial class Form1: MyFrm<CONTACTS_BASE>
{

    public Form1()
    {
        InitializeComponent();
        MyInitialize();
    }

    public void MyInitialize()
    {
    }                     
}

可以看出,没有什么特别的,但是,当右键单击并选择视图设计器时,我收到以下错误:

无法为此文件显示设计器,因为其中的所有类都无法设计。设计者检查了文件中的以下类:     Form1 ---基类&#39; MyGym.Controls.MyFrm&#39;无法加载。确保已引用程序集并且已构建所有项目。

当我删除下面的部分并相应地编辑我的Form1时,我进入设计师模式时没有出现任何错误。     :形式T:class

为什么我要面对这个问题?有没有解决这个问题? 感谢

1 个答案:

答案 0 :(得分:0)

我相信您需要明确提供public class MyFrm<T> : Form where T : class { public MyFrm() : base() { InitializeComponent(); } private void InitializeComponent() { } } 方法,以便Visual Studio IDE(Designer)正常工作。

public partial class Form1 : MyFrm<CONTACTS_BASE>
{
    public Form1() : base()
    {
        InitializeComponent();
        MyInitialize();
    }

    public void MyInitialize()
    {
    }
}

然后将构造函数链接在一起

: base

请注意 {{1}} 已添加到构造函数中。但是,在这个例子中,由于基本构造函数已经被隐式调用,所以它有点过分。由于这个answer,我提供了这个补充。它声明必须在基类中保留构造函数参数。