J'ai un Enum comme ça:
public enum PromotionTypes
{
Unspecified = 0,
InternalEvent = 1,
ExternalEvent = 2,
GeneralMailing = 3,
VisitBased = 4,
PlayerIntroduction = 5,
Hospitality = 6
}
Je veux vérifier si cet Enum contient un numéro que je donne. Par exemple: quand je donne 4, Enum contient cela, donc je veux renvoyer Vrai, si je donne 7, il n’ya pas 7 dans cet Enum, donc il retourne Faux. J'ai essayé Enum.IsDefine mais cela ne fait que vérifier la valeur de la chaîne. Comment puis je faire ça?
La méthode IsDefined
nécessite deux paramètres. Le le premier paramètre est le type de l'énumération à vérifier. Ce type est généralement obtenu à l'aide d'une expression typeof. Le second paramètre est défini comme un objet de base. Il est utilisé pour spécifier soit la valeur entière, soit une chaîne contenant le nom de la constante à rechercher. La valeur de retour est un booléen qui est vrai si la valeur existe et faux dans le cas contraire.
enum Status
{
OK = 0,
Warning = 64,
Error = 256
}
static void Main(string[] args)
{
bool exists;
// Testing for Integer Values
exists = Enum.IsDefined(typeof(Status), 0); // exists = true
exists = Enum.IsDefined(typeof(Status), 1); // exists = false
// Testing for Constant Names
exists = Enum.IsDefined(typeof(Status), "OK"); // exists = true
exists = Enum.IsDefined(typeof(Status), "NotOK"); // exists = false
}
Essaye ça:
IEnumerable<int> values = Enum.GetValues(typeof(PromotionTypes))
.OfType<PromotionTypes>()
.Select(s => (int)s);
if(values.Contains(yournumber))
{
//...
}
Tu devrais utiliser Enum.IsDefined
.
J'ai essayé Enum.IsDefine mais cela ne fait que vérifier la valeur de la chaîne.
Je suis sûr à 100% qu'il vérifiera à la fois la valeur de chaîne et la valeur int (la valeur sous-jacente), du moins sur ma machine.
Peut-être voudrez-vous vérifier et utiliser l'énumération de la valeur de chaîne:
if(Enum.TryParse(strType, out MyEnum myEnum)))
{
// use myEnum
}