Есть несколько способов достичь этого:
return typeof(Enum).IsAssignableFrom(t) && t != typeof(Enum);
или
return typeof(Enum).IsAssignableFrom(t) && t.IsValueType;
или (теперь, когда я видел , он существует при проверке IsValueType
)
return t.IsEnum;
Очевидно, что последний - лучший подход, но первые два дадут вам подсказки о том, как справляться с подобными ситуациями.