238 votes

Enum en retire attribut Description

Double Possible:
Trouver une valeur d'enum par sa Description de l'Attribut

J'ai une extension générique de la méthode qui obtient l' Description d'attribut à partir d'un Enum:

enum Animal
{
    [Description("")]
    NotSet = 0,

    [Description("Giant Panda")]
    GiantPanda = 1,

    [Description("Lesser Spotted Anteater")]
    LesserSpottedAnteater = 2
}

public static string GetDescription(this Enum value)
{            
    FieldInfo field = value.GetType().GetField(value.ToString());

    DescriptionAttribute attribute
            = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute))
                as DescriptionAttribute;

    return attribute == null ? value.ToString() : attribute.Description;
}

afin que je puisse faire...

string myAnimal = Animal.GiantPanda.GetDescription(); // = "Giant Panda"

maintenant, je suis en train de travailler sur la fonction équivalente dans l'autre sens, quelque chose comme...

Animal a = (Animal)Enum.GetValueFromDescription("Giant Panda", typeof(Animal));

351voto

max Points 16106
<pre><code></code><p>Utilisation :</p><pre><code></code></pre></pre>

44voto

Dean Chalk Points 7935

plutôt que les méthodes d’extension, juste essayer quelques méthodes statiques

et utilisation ici

17voto

Theo Koekemoer Points 91

La solution fonctionne bien sauf si vous avez un Service Web.

Vous devez effectuer les opérations suivantes comme l’attribut de Description n’est pas sérialisable.

6voto

Jamiec Points 35773

Devrait être assez simple, c’est juste l’inverse de votre méthode précédente ;

Utilisation :

3voto

GenericTypeTea Points 27689

Vous ne pouvez pas étendre car c’est une classe statique. Vous pouvez uniquement étendre les instances d’un type. Dans cette optique, vous allez devoir créer une méthode statique vous-même de le faire ; ce qui suit devrait fonctionner lorsqu’il est combiné avec votre méthode existante :

Et l’utilisation de celui-ci serait quelque chose comme ceci :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X