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?

Foi útil?

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
scroll top