首页 > 后端开发 > C++ > 如何在运行时可靠地测试 C# 中的泛型类型?

如何在运行时可靠地测试 C# 中的泛型类型?

Patricia Arquette
发布: 2025-01-06 15:32:40
原创
841 人浏览过

How Can I Reliably Test for Generic Types in C# at Runtime?

使用类型反射测试 C# 中的泛型类型推断

在 C# 中,为泛型​​类型变量赋值需要在编译时进行类型推断确定值的实际类型。当尝试在运行时测试对象是否为泛型类型时,这可能会导致混乱。

如原始代码所示,一种常见方法是将对象的类型与泛型类型定义进行比较。但是,这不适用于具有特定类型参数的泛型实例。

要正确测试对象是否是泛型类型的实例,可以使用 System.Type 的 IsGenericType 属性:

bool isGeneric = list.GetType().IsGenericType;
登录后复制

如果对象是泛型类型的实例,则无论类型参数如何,都将返回 true。

如果您特别需要测试对象是否是实例通用 List 的类型,您可以使用 GetGenericTypeDefinition 方法将对象的类型定义与 List 的定义进行比较:

bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);
登录后复制

如果对象是 List 的实例,则返回 true与任何类型参数。

请注意,这两种方法都会检查确切的类型等效性。如果对象派生自泛型类型,这些测试将返回 false。

以上是如何在运行时可靠地测试 C# 中的泛型类型?的详细内容。更多信息请关注PHP中文网其他相关文章!

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