2009-10-08 32 views
48

Por ejemplo, System.Net.HttpStatusCode Enum, me gustaría obtener los códigos de estado HTTP en lugar del texto de estado HTTP. System.Net.HttpStatusCode.Forbidden debe devolver 403 en lugar de "Prohibido".¿Cómo obtener el valor numérico de Enum?

¿Cómo puedo extraer el valor?

+0

duplicado Posible de [Obtención de Http Status número de código (200, 301, 404, etc.) a partir de HttpWebRequest y HttpWebResponse] (http : //stackoverflow.com/questions/1330856/getting-http-status-code-number-200-301-404-etc-from-httpwebrequest-and-ht) –

Respuesta

72

Para la mayoría de Enum, simplemente transfiere al tipo de base que es int32.

int value = (int)System.Net.HttpStatusCode.Forbidden; 
+2

lo que es un ejemplo de una minoría que no se puede simplemente echar ? – Jimmy

+4

@Jimmy, cualquier enumeración que tenga un tipo de base diferente. En esos casos, solo necesita convertir al tipo de base apropiado (uint32, etc.) ... – JaredPar

+8

Podría agregar que puede obtener el tipo subyacente de la enumeración utilizando el método estático Enum.GetUnderlyingType (typeof (MyEnum)). – Yoopergeek

16

¡Puede simplemente convertirlo en un número entero!

int code = (int)enumVariable 
7

System.Convert.ToInt32 (response.StatusCode) devuelve el número statusCode

+6

Esto funciona cuando tienes una enumeración, pero no tienes el tipo de enumeración. P.ej. 'void DoSomethingWithEnum (valor de Enum) {int X = Convert.ToInt32 (valor); } 'En este caso, un lanzamiento normal a int no funciona. –

+0

Esto también funciona muy bien si su enumeración es un parámetro de tipo genérico. – Jay

Cuestiones relacionadas