在C#中将类型转换为对象

时间:2012-11-04 01:59:09

标签: c# casting

我有一个函数,我想使显示形式通用。我希望函数检查表单是否已经打开,如果是这样,如果没有创建表单的新实例并显示它,请将其置于顶部。

检查表单是否打开的第一部分都很好,但是我从T中进行了转换并创建了一个类型为T的新表单对象。我已经使用这行代码创建了一个{{1但是它没有显示intellisense中的所有方法和属性。代码obj = Activator.CreateInstance<T>();将显示所有方法和属性。

我确信我在这里做错了,请为我发光。

Form x = new Form1.
x

1 个答案:

答案 0 :(得分:5)

您需要约束T继承Form

private static void ShowForm<T>() where T : Form, new()

一旦编译器知道T保证继承Form,您就可以使用Form或其基类中定义的所有成员。

您的问题的更一般的答案是将obj投射到Form