2012-07-31 61 views
1

在SO上发布类似问题一年后。 Generic Windows Form Template使Windows窗体通用

你知道,如果有是一个更好的方法,使Windows窗体通用的,这里是我想要做什么:

public partial class EntryPointEditForm<T> : Form where T : ICriteriaObject<T> 
{} 

但抛出一个错误告诉我说: 没有适当的方法找到重写
的方法:

protected override void Dispose(bool disposing) 
+0

@AdamHouldsworth:我相信你是对的,但你的理由是错误的。设计者不需要对通用参数做任何事情;设计师只能使用基类。 – SLaks 2012-07-31 14:08:34

+0

@Slaks我的理解(尽管我的记忆很朦胧,不久之前)是设计试图实例化正在设计的类,但不能,因为它没有'T',因此将'T'解析为强通过使用临时类型似乎工作。 – 2012-07-31 14:09:10

+0

@AdamHouldsworth:否。设计人员实例化_base_类,然后显式读取'InitializeComponent'方法的内容。这就是为什么你可以设计一个抽象表单类。 – SLaks 2012-07-31 14:10:22

回答

6

您需要更改.Designer.cs文件也b中的部分类声明通用。

不过,我不认为VS设计师支持通用表单类。
您可能需要制作一个非通用的抽象表单以供设计人员使用,然后制作一个通用类,以便您继续使用。

+0

谢谢,它的工作原理。我会在11分钟内接受你的问题。 – Gui 2012-07-31 14:07:59

+0

@JohnSmith:设计师是使用泛型类,还是需要应用我的解决方法? – SLaks 2012-07-31 14:08:55

+0

给我2秒,我尝试加载设计师。 – Gui 2012-07-31 14:10:29