Convertir une chaîne de caractères en son énumération

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
}

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;
    }
}

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+

3 réflexions au sujet de « Convertir une chaîne de caractères en son énumération »

  1. 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;
    }

    • 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+

Laisser un commentaire