with strings enumerados enum convertir c# string casting enums

c# - strings - Lanzando cadena a enum



get string enum c# (4)

Esta pregunta ya tiene una respuesta aquí:

Estoy leyendo el contenido del archivo y tomo una cadena en una ubicación exacta como esta

string fileContentMessage = File.ReadAllText(filename).Substring(411, 3);

La salida siempre será Ok o Err

Por otro lado, tengo MyObject que tiene ContentEnum como este

public class MyObject { public enum ContentEnum { Ok = 1, Err = 2 }; public ContentEnum Content { get; set; } }

Ahora, en el lado del cliente quiero usar un código como este (para convertir mi cadena fileContentMessage en propiedad de Content )

string fileContentMessage = File.ReadAllText(filename).Substring(411, 3); MyObject myObj = new MyObject () { Content = /// ///, };


.NET 4.0+ tiene un genérico Enum.TryParse

ContentEnum content; Enum.TryParse(fileContentMessage, out content);


Como extra, puede tomar las respuestas Enum.Parse ya provistas y ponerlas en un método estático fácil de usar en una clase de ayuda.

public static T ParseEnum<T>(string value) { return (T)Enum.Parse(typeof(T), value, ignoreCase: true); }

Y úsalo así:

{ Content = ParseEnum<ContentEnum>(fileContentMessage); };

Especialmente útil si tienes muchos Enumeraciones (diferentes) para analizar.


Echa un vistazo a usar algo como

Enum.TryParse

Convierte la representación de cadena del nombre o valor numérico de una o más constantes enumeradas en un objeto enumerado equivalente. Un parámetro especifica si la operación distingue entre mayúsculas y minúsculas. El valor de retorno indica si la conversión tuvo éxito.

o

Enum.Parse

Convierte la representación de cadena del nombre o valor numérico de una o más constantes enumeradas en un objeto enumerado equivalente.


Use Enum.Parse() .

var content = (ContentEnum)Enum.Parse(typeof(ContentEnum), fileContentMessage);