Comment ajouter des méthodes à un enum pour avoir un "ToString" personnalisé.

icon Tags de l'article : ,

Juin 08, 2011

Bonjour à tous,

Voilà aujourd'hui je me suis dit que j'allais partager avec vous du code que j'utilise régulièrement et qui pourrait vous être utile...

En effet, je suppose qu'il vous est déjà arrivé d'avoir à utiliser des Enum en C#. Or, s'il suffit de caster votre objet en int pour avoir sa valeur, il est bien plus difficile d'obtenir une valeur textuelle définie :

public enum EnumWeapons
{
    Blade = 1,
    Gun = 2,
    Axe = 3,
    Bow = 4
}

// ensuite on doit ajouter dans le code de notre application :

string weaponName = string.Empty;

switch(myEnumWeapons)
{
    case EnumWeapons.Blade: weaponName = "Epée"; break;
    //...
}

Il serait tellement plus simple d'avoir une méthode ToString qui renverrai automatiquement une chaîne de caractères définie à la création de notre Enum...

Mais attendez, c'est possible ! J'avais expliqué il y a quelques semaines comment ajouter des méthodes à une classe en créant une extension. Il nous suffit d'appliquer ça ici :

public enum EnumWeapons
{
    Blade = 1,
    Gun = 2,
    Axe = 3,
    Bow = 4
}

public static class EnumWeaponsHelper
{
    public static string ToExplicitString(this EnumWeapons enumWeapons)
    {
        switch (enumWeapons)
        {
            case EnumWeapons.Axe: return "Hache";
            case EnumWeapons.Blade: return "Epée";
            case EnumWeapons.Bow: return "Arc";
            case EnumWeapons.Gun: return "Revolver";
            default: return string.Empty;
        }
    }
}

Grâce à ce code, lorsque vous aurez un objet EnumWeapons, vous aurez une belle méthode ToExplicitString() qui vous donnera une version textuelle définie par vos soins de votre objet !

En espérant que ça vous sera utile Wink

Bonne journée à tous !

Commentaires fermés

icon Flux RSS des commentaires de cet article

Les commentaires sont fermés pour cet article