Як я можу перевірити, чи є Type типовим переліченням в C # щось на зразок
Type t = GetMyType();
bool isEnum = t.IsEnum; //Type member
bool isNullableEnum = t.IsNullableEnum(); How to implement this extension method?
Відповіді:
EDIT: Я збираюся залишити цю відповідь, оскільки вона спрацює, і вона демонструє кілька дзвінків, про які читачі можуть і не знати. Однак відповідь Луки, безумовно, приємніша - підйміться за :)
Ви можете зробити:
public static bool IsNullableEnum(this Type t)
{
return t.IsGenericType &&
t.GetGenericTypeDefinition() == typeof(Nullable<>) &&
t.GetGenericArguments()[0].IsEnum;
}
public static bool IsNullable(this Type type)
{
return type.IsClass
|| (type.IsGeneric && type.GetGenericTypeDefinition == typeof(Nullable<>));
}
Я пропустив IsEnum
перевірку, яку ви вже зробили, оскільки це робить цей метод більш загальним.