我有一个函数,我想使显示形式通用。我希望函数检查表单是否已经打开,如果是这样,如果没有创建表单的新实例并显示它,请将其置于顶部。
检查表单是否打开的第一部分都很好,但是我从T中进行了转换并创建了一个类型为T的新表单对象。我已经使用这行代码创建了一个{{1但是它没有显示intellisense中的所有方法和属性。代码obj = Activator.CreateInstance<T>();
将显示所有方法和属性。
我确信我在这里做错了,请为我发光。
Form x = new Form1.
x
答案 0 :(得分:5)
您需要约束T继承Form
:
private static void ShowForm<T>() where T : Form, new()
一旦编译器知道T
保证继承Form
,您就可以使用Form
或其基类中定义的所有成员。
您的问题的更一般的答案是将obj
投射到Form
。