首页 >后端开发 >C++ >如何在运行时动态创建泛型类型实例?

如何在运行时动态创建泛型类型实例?

Patricia Arquette
Patricia Arquette原创
2025-01-13 07:17:42214浏览

How Can I Dynamically Create a Generic Type Instance at Runtime?

运行时动态创建泛型类型实例

在某些情况下,可能需要根据运行时确定的类型动态创建泛型类型的实例。这可能具有挑战性,因为泛型类型通常在编译时定义。

一种实现此目标的方法是利用反射。以下是一种变通方法,允许您使用包含目标类型的变量创建泛型类型实例:

<code class="language-csharp">Type k = typeof(double);
Type genericListType = typeof(List<>); // 注意这里<>
var specificListType = genericListType.MakeGenericType(k);
var list = Activator.CreateInstance(specificListType);</code>

MakeGenericType 方法接受单个 Type 参数,并返回一个新的 Type 对象,该对象表示具有指定类型参数的泛型类型。在本例中,我们传入 doubleType 来指定目标类型。

获得具体的泛型类型后,我们可以使用 Activator.CreateInstance 方法实例化该类型的对象。此方法使用反射机制动态创建指定对象类型的新实例。

通过这种方法,您可以根据运行时确定的类型动态创建泛型类型实例,从而实现更大的灵活性和代码适应性。 请注意,typeof(List) 需要改为 typeof(List<>) 才能正确表示泛型类型List<T>

以上是如何在运行时动态创建泛型类型实例?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn