我正在尝试创建从"泛型"基类继承的表单,其中该基类的泛型参数具有必须实现我的一个接口的约束.
它编译并运行得很好.我的问题在于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