5

是否可以在不使用任何泛型参数的情况下检查泛型类型的类型?

例如,我希望能够做类似于以下的事情(实际类型的名称已更改以保护无辜者):

var list = new List<SomeType>();

...

if (list is List)
    {
    Console.WriteLine("That is a generic list!");
    }

上面的代码当前会产生以下错误:

Using the generic type 'System.Collections.Generic.List<T>' requires 1 type arguments

有没有解决的办法?最好是一些简洁且适用于没有泛型参数的类型(即:“如果 myString 是 List”)。

4

1 回答 1

9

你可以这样检查:

var type = list.GetType();
if(type.IsGenericType && 
   type.GetGenericTypeDefinition().Equals(typeof(List<>)))
{
    // do work
}
于 2013-04-27T11:02:00.833 回答