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

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

Patricia Arquette
发布: 2025-01-13 07:17:42
原创
217 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板