Em minha string de consulta, tenho uma variável de idade ?age=New_Born
.
Existe uma maneira de verificar se este valor de string New_Born
está na minha lista Enum
[Flags]
public enum Age
{
New_Born = 1,
Toddler = 2,
Preschool = 4,
Kindergarten = 8
}
Eu poderia usar a instrução if agora, mas se minha lista Enum ficar maior. Eu quero encontrar uma maneira melhor de fazer isso. Estou pensando em usar o Linq, mas não tenho certeza de como fazê-lo.
Enum.IsDefined
não está tudo bem?Respostas:
Você pode usar:
fonte
Enum.IsDefined()
maiúsculas de minúsculas! Portanto, essa não é uma "solução universal".Você pode usar o método Enum.ExperimenteParse:
fonte
Você pode usar o método TryParse que retorna verdadeiro se for bem-sucedido:
fonte
Eu tenho um método de extensão útil que usa TryParse, pois IsDefined faz distinção entre maiúsculas e minúsculas.
fonte
Você deve usar Enum.ExperimenteParse para atingir seu objetivo
Este é um exemplo:
fonte
Eu sei que este é um thread antigo, mas aqui está uma abordagem ligeiramente diferente usando atributos em Enumerates e, em seguida, uma classe auxiliar para encontrar o enumerado que corresponda.
Dessa forma, você pode ter vários mapeamentos em um único enumerado.
Com minha aula de ajudante assim
você pode então fazer algo como
E para completar aqui está o atributo:
fonte
Para analisar a idade:
Para ver se está definido:
Dependendo de como você planeja usar o
Age
enum, os sinalizadores podem não ser a coisa certa. Como você provavelmente sabe,[Flags]
indica que deseja permitir vários valores (como em uma máscara de bits).IsDefined
retornará falso paraAge.Toddler | Age.Preschool
porque tem vários valores.fonte