Dans ma chaîne de requête, j'ai une variable d'âge ?age=New_Born
.
Existe-t-il un moyen de vérifier si cette valeur de chaîne New_Born
est dans ma liste Enum
[Flags]
public enum Age
{
New_Born = 1,
Toddler = 2,
Preschool = 4,
Kindergarten = 8
}
Je pourrais utiliser l'instruction if pour le moment, mais si ma liste Enum s'agrandit. Je veux trouver une meilleure façon de le faire. Je pense utiliser Linq, mais je ne sais pas comment le faire.
Enum.IsDefined
pas d'accord?Réponses:
Vous pouvez utiliser:
la source
Enum.IsDefined()
c'est sensible à la casse! Ce n'est donc pas une «solution universelle».Vous pouvez utiliser la méthode Enum.TryParse:
la source
Vous pouvez utiliser la méthode TryParse qui renvoie true si elle réussit:
la source
J'ai une méthode d'extension pratique qui utilise TryParse, car IsDefined est sensible à la casse.
la source
Vous devez utiliser Enum.TryParse pour atteindre votre objectif
Voici un exemple:
la source
Je sais que c'est un ancien thread, mais voici une approche légèrement différente utilisant des attributs sur les Enumerates, puis une classe d'assistance pour trouver l'énumération qui correspond.
De cette façon, vous pouvez avoir plusieurs mappages sur une seule énumération.
Avec ma classe d'aide comme ça
vous pouvez alors faire quelque chose comme
Et pour être complet, voici l'attribut:
la source
Pour analyser l'âge:
Pour voir s'il est défini:
Selon la façon dont vous prévoyez d'utiliser l'
Age
énumération, les indicateurs peuvent ne pas être la bonne chose. Comme vous le savez probablement,[Flags]
indique que vous souhaitez autoriser plusieurs valeurs (comme dans un masque de bits).IsDefined
renverra false carAge.Toddler | Age.Preschool
car il a plusieurs valeurs.la source