Wie überprüfe ich, ob ein Typ eine nullbare Aufzählung in C # ist?
Type t = GetMyType();
bool isEnum = t.IsEnum; //Type member
bool isNullableEnum = t.IsNullableEnum(); How to implement this extension method?
public static bool IsNullableEnum(this Type t)
{
Type u = Nullable.GetUnderlyingType(t);
return (u != null) && u.IsEnum;
}
EDIT: Ich werde diese Antwort offen lassen, da sie funktionieren wird, und sie zeigt einige Anrufe, von denen die Leser sonst vielleicht nichts wissen. Allerdings ist Lukes Antwort definitiv besser - stimmen Sie ab :)
Du kannst tun:
public static bool IsNullableEnum(this Type t)
{
return t.IsGenericType &&
t.GetGenericTypeDefinition() == typeof(Nullable<>) &&
t.GetGenericArguments()[0].IsEnum;
}
Ab C # 6.0 kann die akzeptierte Antwort als umgestaltet werden
Das == true wird benötigt, um bool zu konvertieren? zu boolen
quelle
Ich habe die
IsEnum
Prüfung, die Sie bereits durchgeführt haben, weggelassen, da dies diese Methode allgemeiner macht.quelle
Siehe http://msdn.microsoft.com/en-us/library/ms366789.aspx
quelle