小编Cod*_*rDU的帖子

VS Designer错误:GenericArguments [0],'Y'上的'X'违反了类型参数'Z'的约束

我正在尝试创建从"泛型"基类继承的表单,其中该基类的泛型参数具有必须实现我的一个接口的约束.

它编译并运行得很好.我的问题在于Visual Studio设计器.它将打开表单,直到我重建项目,然后在尝试查看表单设计器时报告下面的错误,直到我重新启动Visual Studio,或删除基类中的自定义接口约束.

GenericArguments[0], 'InterfaceInBaseClassProblem.TestEntity', on 'InterfaceInBaseClassProblem.BaseWindowClass`1[EntityType]' violates the constraint of type 'EntityType'.
Run Code Online (Sandbox Code Playgroud)

第1步:创建一个界面

namespace InterfaceInBaseClassProblem
{
    public interface ITestInterface
    {
        void Func1();
    }
}
Run Code Online (Sandbox Code Playgroud)

第2步:创建一个实现接口的类

namespace InterfaceInBaseClassProblem
{
    public class TestEntity : ITestInterface
    {
        public void Func1()
        {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

步骤3:创建一个通用基类Form,它需要一个通用参数约束,要求实现我们创建的接口

using System.Windows.Forms;
namespace InterfaceInBaseClassProblem
{
    public class BaseWindowClass<EntityType> : Form where EntityType : ITestInterface
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

第4步:现在创建一个继承自Generic Base Form的新表单,并使用TestEntity类作为参数

namespace InterfaceInBaseClassProblem
{
    public partial class Form1 : BaseWindowClass<TestEntity>
    {
        public Form1()
        {
            InitializeComponent();
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c# generics type-constraints windows-forms-designer visual-studio

6
推荐指数
1
解决办法
546
查看次数