在VS设计器中使通用形式的后代可见并可编辑

时间:2015-10-29 18:38:43

标签: windows forms generics inheritance designer

我正在尝试使用泛型创建基本表单,所以我可以这样做:

public class GenericForm<T> : Form where T : IEntity

然后:

public class ManageCustomerForm : GenericForm<Customer>

但我无法查看ManageCustomerForm的设计师。我理解这是因为VS试图创建一个GenericForm实例,但不知道在T上使用什么类型。

所以我尝试了一些使用TypeDescriptionProviders的解决方案,因为它适用于基本表单类是抽象的情况。但它也不起作用。有可能吗?

我想避免创建一个像这样的中间类:

public class GenericForm<T> : Form where T : IEntity

public class ManageCustomerIntermediateForm : GenericForm<Customer>

public class ManageCustomerForm : ManageCustomerIntermediateForm

1 个答案:

答案 0 :(得分:0)

我认为Customer是表单的数据。不是将数据绑定到表单,而是为Customer使用单独的数据类。 DataBinding可用于将用户界面控件绑定到数据源。

另一个想法是使用模型 - 视图 - 控制器设计模式将表单(视图)与模型(客户)分开。