一尘不染

测试对象在C#中是否为通用类型

c#

我想执行一个对象是否为通用类型的测试。我已经尝试了以下方法,但均未成功:

public bool Test()
{
    List<int> list = new List<int>();
    return list.GetType() == typeof(List<>);
}

我做错了什么以及如何执行此测试?


阅读 228

收藏
2020-05-19

共1个答案

一尘不染

如果要检查它是否是泛型类型的实例:

return list.GetType().IsGenericType;

如果要检查它是否是通用的List<T>

return list.GetType().GetGenericTypeDefinition() == typeof(List<>);

正如乔恩(Jon)所指出的那样,这检查了确切的类型等效性。返回false并不一定意味着list is List<T>返回false(即无法将对象分配给List<T>变量)。

2020-05-19