Por que o Enum.Parse () retorna o objeto?
Há muitas perguntas aqui sobre como converter strings em um valor enum. Geralmente, a resposta é algo como as respostas emessa questão:
StatusEnum MyStatus = (StatusEnum) Enum.Parse( typeof(StatusEnum), "Active", true );
Embora essa seja uma resposta perfeitamente razoável, e você pode escrever um método para simplificar a chamada, ela não responde à pergunta deporque Enum.Parse () retorna umobject
em vez do valor enum apropriado. Por que eu tenho que lançá-lo paraStatusEnum
?
Editar:
Basicamente, a questão é por que uma função como essa não faz parte da classe Enum?
public static T Parse<T>(string value) where T: struct
{
return (T)Enum.Parse(typeof (T), value);
}
Esta função funciona perfeitamente, faz exatamente o que você espera.StatusEnum e = Enum.Parse<StatusEnum>("Active");
.