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
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
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);