通用WinForms的层次结构

问题描述

| 我有以下表格:
class EditForm<T> : Form { }

class ConcreteForm : ConcreteFormDesignable { }
class ConcreteFormDesignable : EditForm<int> { }

class AdvEditForm<T> : EditForm<T> { } // <-- ???

class AdvConcreteForm : AdvConcreteFormDesignable { }
class AdvConcreteFormDesignable : AdvEditForm<int> { }
如何使AdvEditForm可设计? 编辑(对于Alex Aza): 我不清楚,我应该在AdvEditForm.cs和AdvEditForm.Designer.cs中确切输入什么内容... AdvEditForm.Designer.cs:
public partial class NonGenericAdvEditForm { }
AdvEditForm.cs:
public partial class NonGenericAdvEditForm : AdvEditForm<Object> { }
public class AdvEditForm<T> : EditForm<T>  { }
但是我不知道应该从哪个类继承AdvConcreteForm:
class AdvConcreteForm : AdvConcreteFormDesignable { }
class AdvConcreteFormDesignable : ??????? { }
    

解决方法

        您可以仅出于
Design
的目的添加非泛型类。
class NonGenericAdvEditForm : AdvEditForm<ConcreteType>
{
}
设计人员需要具体的课程,例如
AdvEditForm<int>
AdvEditForm<MyType>
。如果不指定T是什么,则无法实例化
AdvEditForm<T>
。指定具体T的方法是创建一个具体的非泛型类。     ,        这是解决此问题的好方法http://madprops.org/blog/designing-generic-forms/     ,        我发现的唯一解决方案是:
// 1 Uncomment for design
//public partial class EntityListViewWithEditor<TEntity> : EntityListViewDesignable
// 2 Uncomment for compilation
public partial class EntityListViewWithEditor<TEntity> : EntityListView<TEntity>
    where TEntity : XPBaseObject
{ }

// 1 Uncomment for design
//public class EntityListViewDesignable : EntityListView<XPBaseObject> { }
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...