0
假設我有機會到現場的使用反射類型:如何檢測如果一個類型是一個列表?
FieldInfo item;
Type type = item.FieldType;
我想知道,如果type
是一個通用的List
或沒有,我怎麼能這樣做?我需要這樣的東西如下,但它不工作:
if (type == typeof(List<>))
假設我有機會到現場的使用反射類型:如何檢測如果一個類型是一個列表?
FieldInfo item;
Type type = item.FieldType;
我想知道,如果type
是一個通用的List
或沒有,我怎麼能這樣做?我需要這樣的東西如下,但它不工作:
if (type == typeof(List<>))
嘗試
Type type = item.FieldType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(List<>))
你需要的是:
/// <summary>
/// Determines whether the given <paramref name="type"/> is a generic list
/// </summary>
/// <param name="type">The type to evaluate</param>
/// <returns><c>True</c> if is generic otherwise <c>False</c></returns>
public static bool IsGenericList(this Type type)
{
if (!type.IsGenericType) { return false; }
var typeDef = type.GetGenericTypeDefinition();
if (typeDef == typeof(List<>) || typeDef == typeof(IList<>)) { return true; }
return false;
}