Aufzählungselemente sollten nicht für die Anzeige von Benutzeroberflächen verwendet werden. Sie sollten einer Zeichenkette zugeordnet werden, um angezeigt zu werden. Sie können ein Zeichenfolgenarray (oder ein Wörterverzeichnis) erstellen, das jedem Enumerationselement eine Zeichenfolge für die Benutzerinteraktion zuordnet.
Um Ihre Frage direkt zu beantworten, können Sie Wie Henk darauf hinweist, wird dies nicht für \uxxxxV
verwenden, wo xxxx
die hexadezimale Zahl ist, die den Unicode-Codepunkt für %
darstellt. Dies ist bei weitem nicht zu empfehlen. %
funktionieren, da es nicht in den Unicode-Klassen Lu, Ll, Lt, Lm, Lo, NL, Mn, Mc, Nd, Pc, Cf (Buchstaben, Ziffern, Verbindungs- und Formatierungszeichen). Nur diese Zeichen sind für Bezeichner zulässig.
Selbst wenn Sie das tun könnten (und es sieht so aus, als könnten Sie das nicht), wäre es wahrscheinlich keine gute Idee, weil Sie mischen würden, wie das Enum mit dem Programmcode angezeigt werden soll, um es zu manipulieren. Eine bessere Option wäre, ein Attribut zu definieren (oder das vorhandene DisplayNameAttribute
zu verwenden) und Ihre Enumeration mit Namen als zusätzliche Metadaten zu versehen:
Diese Antwort bezieht sich auf die von @Coppermill. Ich denke, dass die Verwendung des DescriptionAttribute bei der Arbeit mit Enums semantisch korrekter ist
%Vor%Dann lese ich davon wie solche
%Vor%.
%Vor% Dann wäre die Verwendung ReadDescription(ReportStatus.Running)
Ich habe auch eine Methode, die eine Enum in eine KeyValuePair Enumerable umbinden wird, um ein Enum an ein DropDown zu binden.
Ich bin nicht sicher, warum Sie nach Sonderzeichen in Ihrem Enum sind, aber wenn Sie wie ich sind und Sie einen besseren Namen anzeigen müssen als vielleicht mit den XmlEnumAttribute -Werten für eine Enum
eingebenSchaut euch meinen Blog für weitere Details an
Tut mir leid, aber ich habe gerade gemerkt, dass ich die Frage nicht beantwortet habe. Ich werde meine Antwort nicht löschen, da jemand diese Code-Snippets möglicherweise hilfreich finden kann.
Ich stimme Tomas Petricek vollkommen zu, deshalb werde ich seine Antwort nicht wiederholen.
Hier ist meine Lösung für das Problem. Ich benutze diesen Code seit ungefähr fünf Jahren. Ich entschied mich, ein benutzerdefiniertes Attribut zu erstellen, um das DisplayName-Attribut für Beschriftungen und ähnliches zu verwenden.
%Vor% %Vor% %Vor% %Vor%Einige können angeben, dass Aufzählungen nur für Code sind, ich muss nicht zustimmen und ich verwende Code- und Anzeigefunktionen.
In Ihrem speziellen Fall würde ich das ganze Wort verwenden
%Vor%So kann ich sie beispielsweise in einem Dropdown-Menü verwenden (wenn ich ein neues Element erstellen muss, muss ich dieses Element nur an die Aufzählung anhängen ...
%Vor%Ich neige dazu, das Space-Trennzeichen zu verwenden, verwende aber normalerweise Unterstriche, um Leerzeichen zu erstellen, wie
%Vor%und das DropDownList-Element wäre
%Vor%Wenn ich den Typ aus DropDown festlegen möchte, verwende ich das Parse
%Vor%natürlich, wenn Sie Separator
verwenden %Vor%Einige Regeln in Erwägung ziehen, besseren Code zu schreiben
Zur Erinnerung
Ich hoffe, ich kann jemandem helfen.
Tags und Links .net enums special-characters