gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 20:21:33 25 4
gpt4 key购买 nike

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

检查表单是否打开的第一部分一切正常,但我正在从 T 进行转换并创建类型为 T 的新表单对象。我使用这行代码创建了表单的实例 obj = Activator.CreateInstance<T>();但它并没有显示智能感知中的所有方法和属性。代码在哪里 Form x = new Form1.
x
将显示所有方法和属性。

我确定我在这里做错了什么请为我发光。

     private static void ShowForm<T>(  )
{
T obj = default( T );

List<T> opened = FormManager.GetListOfOpenForms<T>();
if ( opened.Count == 0 )
{
// not opened

// obj does not show all properties and methods
obj = Activator.CreateInstance<T>();


// x shows all properties and methods
frmLogin x = new frmLogin();

}
else
{
// opened

}

}

最佳答案

需要约束T继承Form:

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

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

对于您的问题,更一般的答案是将 obj 转换为 Form

关于c# - 在 C# 中将类型转换为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13215356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com