C’est assez pratique et on n’y pense pas toujours alors je le mets ici.
Mettons l’énumération ci-dessous:
public enum MonEnum
{
// Définition d'une valeur par défaut en lui associant la valeur numérique "0"
Zero = 0,
Un = 1,
Deux = 2,
Trois = 3
}
{
// Définition d'une valeur par défaut en lui associant la valeur numérique "0"
Zero = 0,
Un = 1,
Deux = 2,
Trois = 3
}
Comment obtenir la valeur correspondant à la chaîne de caractères suivante: « Deux »? Tout simplement ainsi:
class MaClass
{
public static MonEnum GetEnum(string p)
{
var obj = default(MonEnum);
if (Enum.IsDefined(typeof(MonEnum), p))
{
obj = (MonEnum)Enum.Parse(typeof(MonEnum), p);
}
return obj;
}
}
{
public static MonEnum GetEnum(string p)
{
var obj = default(MonEnum);
if (Enum.IsDefined(typeof(MonEnum), p))
{
obj = (MonEnum)Enum.Parse(typeof(MonEnum), p);
}
return obj;
}
}
Attention, la méthode « Enum.IsDefined(Type enumType, object value) » est sensible à la casse.
Voici comment en faire une méthode générique:
Désolé, le blog convertit les signes « supérieur » et « inférieur ». Je vous mets ce code sous forme d’image…
A+
En me basant sur cette méthode et en utilisant la méthode tryparse d’enum j’obtiens ça:
public static T GetEnum(string p) where T : struct
{
T obj;
if (!Enum.TryParse(p, out obj))
{
obj = default(T);
}
return obj;
}
et pourquoi pas hériter MonEnum de int
public enum MonEnum : int
{
…}
var deux=MonEnum.deux;
var i = (int) deux;
Salut,
Ton code ne répond pas au problème. Celui-ci est: comment obtenir l’enum correspondant à une chaîne de caractères. Ton code lui permet d’obtenir la valeur numérique associée à une enum. C’est quelque chose qui est supporté nativement par le Framework (pas besoin d’héritage), il suffit de faire: (int)MonEnum.deux.
A+