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

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

Patricia Arquette
Patricia Arquette原创
2025-01-06 15:32:40844浏览

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

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