text: c# — Attribute von Enums Wert erhalten
  /Attribute von Enums Wert erhalten
  Ich würde gerne wissen, ob es möglich ist, Attribute der Aufzählungswerte und nicht der Aufzählung selbst zu erhalten. Angenommen, ich habe die folgende Enumeration:
  Was ich will, ist der Aufzählungstyp, erzeugt 2-Tupel des Aufzählungswerts und dessen Beschreibung.
  Wert war einfach:
  Aber wie erhalte ich den Wert des Beschreibungsattributs, um Tuple.Desc aufzufüllen? Ich kann mir überlegen, wie es geht, wenn das Attribut zur Enumeration selbst gehört, aber ich weiß nicht, wie ich es aus dem Enummenwert erhalten kann.
  25.11.2009 Alex K
  Das sollte tun, was Sie brauchen.
  var type = typeof(FunkyAttributesEnum);
  var memInfo = type.GetMember(FunkyAttributesEnum.NameWithoutSpaces1.ToString());
  var description = ((DescriptionAttribute)attributes[0]).Description;
  25.11.2009 Bryan Rowe
  Dieser Codeteil sollte Ihnen eine nette kleine Erweiterungsmethode für jedes Enum geben, mit der Sie ein generisches Attribut abrufen können. Ich glaube, es unterscheidet sich von der oben genannten Lambda-Funktion, da sie einfacher zu bedienen ist und ein wenig verwendet wird - Sie müssen nur den generischen Typ übergeben.
  14.02.2012 AdamCrawford
  Dies ist eine generische Implementierung, die ein Lambda für die Auswahl verwendet
  02.02.2011 Scott Belchak
  Ich habe hier einige Antworten zusammengeführt, um eine etwas erweiterbare Lösung zu schaffen. Ich gebe es nur für den Fall, dass es in der Zukunft für alle anderen hilfreich ist. Originalposting hier .
  Diese Lösung erstellt ein Paar von Erweiterungsmethoden für Enum. Mit der ersten können Sie mithilfe von Reflection alle mit Ihrem Wert verknüpften Attribute abrufen. Der zweite Aufruf ruft speziell die Variable DescriptionAttribute ab und gibt ihren Wert Description zurück.
  Als Beispiel können Sie das DescriptionAttribute-Attribut aus System.ComponentModel verwenden.
  Um die obige Erweiterungsmethode zu verwenden, rufen Sie jetzt einfach Folgendes auf:
  27.10.2013 Troy Alford
  Zusätzlich zur AdamCrawford-Antwort habe ich eine speziellere Erweiterungsmethode erstellt, die die Beschreibung liefert.
  um die Beschreibung zu erhalten, können Sie entweder die ursprüngliche Erweiterungsmethode als verwenden
  oder Sie können die Erweiterungsmethode hier einfach als aufrufen:
  Was hoffentlich Ihren Code etwas lesbarer machen soll.
  18.06.2013 FunksMaName
  Fließend ein Liner ...
  Hier verwende ich die DisplayAttribute, die sowohl die Name- als auch die Description-Eigenschaft enthält.
  04.08.2014 Aydin
  Hier finden Sie Code zum Abrufen von Informationen aus einem Anzeigeattribut. Es verwendet eine generische Methode, um das Attribut abzurufen. Wenn das Attribut nicht gefunden wird, konvertiert es den Aufzählungswert in eine Zeichenfolge, wobei Pascal/camel case in title case konvertiert wird (Code erhalten hier ).
  Und dies ist die Erweiterungsmethode für Zeichenfolgen zur Konvertierung in Titelkürzel:
  02.07.2013 Colin
  Holen Sie sich das Wörterbuch von enum.
  Nun nennst du das wie ...
  EnumDecription Ext-Methode
  01.07.2014 Jitendra Pancholi
  Ich habe diese Erweiterungsmethode implementiert, um die Beschreibung aus den Listenwerten zu erhalten. Es funktioniert für alle Arten von Enummen.
  21.05.2013 Nick N.
  Hier ist die .NET Core-Version von AdamCrawfords Antwort mit System.Reflection.TypeExtensions ;
  12.10.2016 wonea
  Meine Lösung für Net Framework und NetCore hinzufügen.
  Ich habe dies für meine Net Framework-Implementierung verwendet:
  Dies funktioniert nicht für NetCore, daher habe ich es geändert:
  Beispielverwendung für entweder statisch hinzugefügt:
  05.01.2017 HouseCat
  Sie können einige der neueren C # -Sprachenfunktionen nutzen, um die Zeilenanzahl zu reduzieren:
  17.07.2016 Rob Lyndon
  Diese Erweiterungsmethode erhält mit ihrem XmlEnumAttribute eine Zeichenfolgendarstellung eines Aufzählungswerts. Wenn kein XmlEnumAttribute vorhanden ist, wird auf enum.ToString () zurückgegriffen.
  08.08.2013 saille
  Ich beantworte diese Antwort, um ein Kombinationsfeld aus Enumerationsattributen zu erstellen, das großartig war.
  Ich musste dann die Umkehrung kodieren, damit ich die Auswahl aus der Box bekommen und die Aufzählung im richtigen Typ zurückgeben kann.
  Ich habe den Code auch geändert, um den Fall zu behandeln, in dem ein Attribut fehlte
  Für die Vorteile der nächsten Person ist hier meine endgültige Lösung
  25.11.2014 Steve Pinfold
  Und wenn Sie die vollständige Liste der Namen wünschen, können Sie so etwas tun
  05.07.2016 MeTitus
  Jungs, wenn es hilft, werde ich mit Ihnen meine Lösung teilen: Definition des benutzerdefinierten Attributs:
  Jetzt, weil ich es in der HtmlHelper-Definition von HtmlHelper-Erweiterung brauchte:
  29.12.2013 g0rski
  Wenn Ihre enum einen Wert wie Equals enthält, werden Sie möglicherweise auf ein paar Fehler stoßen, indem Sie einige Erweiterungen in vielen Antworten hier verwenden. Dies liegt daran, dass normalerweise angenommen wird, dass typeof(YourEnum).GetMember(YourEnum.Value) nur einen Wert zurückgibt, nämlich die MemberInfo Ihrer enum. Hier ist eine etwas sicherere Version Adam Crawfords Antwort .
  12.05.2019 Prince Owen
  Nun wird in diesem Fall ein Fehler erzeugt 1 "Gleich"
  wenn es sich also um den gleichen Namen handelt, als um den Anzeigenamen, weil enumMember.GetCustomAttribute () erhält den Wert null, wenn Displayname und Enummename gleich sind .....