3 回答
TA贡献1802条经验 获得超10个赞
如果要检查它是否是泛型类型的实例:
return list.GetType().IsGenericType;
如果你想检查它是否是通用的List<T>:
return list.GetType().GetGenericTypeDefinition() == typeof(List<>);
正如Jon指出的那样,这会检查确切的类型等价。返回false并不一定意味着list is List<T>返回false(即,不能将对象分配给List<T>变量)。
TA贡献1898条经验 获得超8个赞
您可以使用动态althougth来使用更短的代码,这可能比纯反射更慢:
public static class Extension
{
public static bool IsGenericList(this object o)
{
return IsGeneric((dynamic)o);
}
public static bool IsGeneric<T>(List<T> o)
{
return true;
}
public static bool IsGeneric( object o)
{
return false;
}
}
var l = new List<int>();
l.IsGenericList().Should().BeTrue();
var o = new object();
o.IsGenericList().Should().BeFalse();
- 3 回答
- 0 关注
- 634 浏览
添加回答
举报