Utilizando Enum.Parse e Generics
Salve desenvolvedores,
em certos momentos, precisamos comparar strings com enumeradores, e como fazer isso de forma simples?
Já vi a prática de um método com switch validando texto a texto e retornando o enum esperado. Realmente isso não é prático.
Vamos criar um novo método genérico recebendo o texto e retornando o enumerador, caso passe pela validação. Crie uma classe chamada Parse, dentro do App_Code, e adicione o seguinte código:
public enum Telefone
{
Fixo,
Celular,
Trabalho
}
public static T ParseEnum
{
if (!typeof(T).IsEnum)
throw new ArgumentException(typeof(T).ToString() + ” não é Enum”);
else
if (!Enum.IsDefined(typeof(T), texto))
throw new ArgumentException(String.Format(”O valor informado (\”{0}\”) não está definido no Enum {1}.”, texto, typeof(T)));
T t = (T)Enum.Parse(typeof(T), texto);
return t;
}
Pronto, agora para testar, vá na página ASP.NET e adicione o código:
Parse.Telefone enumObj = Parse.ParseEnum<Parse.Telefone>(”Trabalho”);
Response.Write(enumObj);
O retorno é: Trabalho.
Ficar atento ao Case Sensitive da string informada. O método Parse do Enum recebe um terceiro parametro bool ignoreCase, porém, é necessário tirar a validação Enum.IsDefined antes. Ao copiar e colar o código, colocar a identação correta, para não ter problemas nos if´s
Outra boa dica do Márcio Jenner.
abraços,
Permalink Enviar por e-mail. Hits para esta publicação: 418.