使用类型反射测试 C# 中的泛型类型推断
在 C# 中,为泛型类型变量赋值需要在编译时进行类型推断确定值的实际类型。当尝试在运行时测试对象是否为泛型类型时,这可能会导致混乱。
如原始代码所示,一种常见方法是将对象的类型与泛型类型定义进行比较。但是,这不适用于具有特定类型参数的泛型实例。
要正确测试对象是否是泛型类型的实例,可以使用 System.Type 的 IsGenericType 属性:
bool isGeneric = list.GetType().IsGenericType;
如果对象是泛型类型的实例,则无论类型参数如何,都将返回 true。
如果您特别需要测试对象是否是实例通用 List
bool isList = list.GetType().GetGenericTypeDefinition() == typeof(List<>);
如果对象是 List
请注意,这两种方法都会检查确切的类型等效性。如果对象派生自泛型类型,这些测试将返回 false。
以上是如何在运行时可靠地测试 C# 中的泛型类型?的详细内容。更多信息请关注PHP中文网其他相关文章!