Como converter uma string para um enum do tipo int? [duplicado]
-
18-09-2019 - |
Pergunta
Duplicate possíveis:
Como faço para converter uma string para um enum em C #?
Eu tenho um enum do tipo int:
public enum BlahType
{
blah1 = 1,
blah2 = 2
}
Se eu tiver uma string:
string something = "blah1"
Como posso converter isso em BlahType?
Solução
Você quer Enum.Parse
BlahType blahValue = (BlahType) Enum.Parse(typeof(BlahType), something);
Outras dicas
Eu uso uma função como este
public static T GetEnumValue<T>(string value)
{
return (T)Enum.Parse(typeof(T), value);
}
E você pode chamá-lo assim
BlahType value = GetEnumValue<BlahType>("Blah1");
Eu uso essa função para converter uma string para um enum; então você pode lançar para int ou qualquer outra coisa.
public static T ToEnum<T>(string value, bool ignoreUpperCase)
where T : struct, IComparable, IConvertible, IFormattable {
Type enumType = typeof (T);
if (!enumType.IsEnum) {
throw new InvalidOperationException();
}
return (T) Enum.Parse(enumType, value, ignoreUpperCase);
}
public enum BlahType
{
blah1 = 1,
blah2 = 2
}
string something = "blah1";
BlahType blah = (BlahType)Enum.Parse(typeof(BlahType), something);
Se você não estiver certo de que a conversão será bem sucedida - o uso, em seguida, TryParse .
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow