5 ответов:
public static bool IsNullableEnum(this Type t) { Type u = Nullable.GetUnderlyingType(t); return (u != null) && u.IsEnum; }
EDIT: я собираюсь оставить этот ответ, поскольку он будет работать, и он демонстрирует несколько вызовов, о которых читатели могут не знать. Однако,Луки определенно лучше-идите вверх:)
вы можете сделать:
public static bool IsNullableEnum(this Type t) { return t.IsGenericType && t.GetGenericTypeDefinition() == typeof(Nullable<>) && t.GetGenericArguments()[0].IsEnum; }
как в C# 6.0 принятый ответ может быть переработан как
Nullable.GetUnderlyingType(t)?.IsEnum == trueзначение = = true необходимо для преобразования bool? в bool
public static bool IsNullable(this Type type) { return type.IsClass || (type.IsGeneric && type.GetGenericTypeDefinition == typeof(Nullable<>)); }Я
IsEnumпроверьте, что вы уже сделали, так как это делает этот метод более общим.
Comments