Prueba si un objeto es una enumeración

90

Me gustaría saber si 'theObject' es una enumeración (de cualquier tipo de enumeración)

 foreach (var item in Enum.GetValues(theObject.GetType())) {

     //do something
 }
Aran Mulholland
fuente

Respuestas:

206

La pregunta es la respuesta. :)

bool isEnum = theObject is Enum;
EMP
fuente
13
¡Quiéralo! Y aún más cerca de la pregunta: si (el objeto es Enum) {...}
Peter Lillevold
5
Esto ni siquiera es para lo que vine aquí y les doy un punto. Es tan ... limpio ... <sniff>, es un hombre hermoso TT
Lukas
12
/ * Test * / if (anObject is / * an * / Enum) {}
Tom Fobear
bool isEnum = theObject.GetType (). IsEnum; es mejor, Enum no siempre se vuelve verdadero
chris hu
69

Si tiene un Type, use la Type.IsEnumpropiedad, por ejemplo:

bool isEnum = theObject.GetType().IsEnum;
Chris Schmich
fuente
2
Esto funcionó para mí. No pude averiguar cómo hacer que la respuesta aceptada funcione en VB.NET.
Shea Daniels
4
De hecho, necesitaba saber cómo verificar un Typeser del tipo Enum. +1
Nathan
8

Solo usa

if (theObject is Enum)
 //is an enum
Laramie
fuente
1

Para los parámetros de tipo genérico, el parámetro se puede restringir en lugar de probar:

where T : Enum
bugged87
fuente