Aquí hay muchas preguntas sobre la conversión de cadenas a un valor enum. En general, la respuesta parece algo así como las respuestas de this question:¿Por qué devuelve Enum.Parse() un objeto?
StatusEnum MyStatus = (StatusEnum) Enum.Parse(typeof(StatusEnum), "Active", true);
Mientras que eso es una respuesta perfectamente razonable, y se puede escribir un método para simplificar la llamada, que no responde a la cuestión de qué Enum. Parse() devuelve un object
en lugar del valor enum apropiado. ¿Por qué tengo que lanzarlo al StatusEnum
?
Editar:
Básicamente, la pregunta es ¿por qué es una función como esta no es parte de la clase Enum?
public static T Parse<T>(string value) where T: struct
{
return (T)Enum.Parse(typeof (T), value);
}
Esta función funciona perfectamente bien, hace exactamente lo que cabría esperar. StatusEnum e = Enum.Parse<StatusEnum>("Active");
.
@ SpYk3HH - Los enumerados no * tienen * valores *. Ellos * son * valores. Son valores que tienen una sobrecarga habitual para '.ToString()', pero siguen siendo solo valores. – Bobson
.NET 4.0+ tiene ['Enum.TryParse'] (http://msdn.microsoft.com/en-us/library/dd783499 (v = vs.100)) –
@ SpYk3HH un valor de un tipo enum es algún entero que puede estar asociado con uno de los campos del tipo enum. El tamaño del número entero puede variar. Parse toma una cadena y devuelve una instancia encuadrada del tipo enum. Eso puede ser desempaquetado o no. Tu última oración tampoco tiene sentido. String y Boolean también tienen propiedades y métodos para trabajar. – phoog