Schlüsselwertpaar als enum

8

Kann ich ein Enum haben, das als Schlüsselwertpaar fungiert?

%Vor%

Wenn ich Infringement wähle, sollte ich "INF0001" bekommen und wenn ich OFN wähle, sollte ich "INF0002"

bekommen

Ist es möglich?

    
Vaibhav Jain 08.02.2011, 10:41
quelle

6 Antworten

5

Sie können Dekoratoren verwenden, um eine String-Darstellung mit Ihren Enum-Werten zu verknüpfen. Überprüfen Sie diese Frage: Enum ToString mit benutzerfreundlichen Zeichenfolgen

Es wird wie folgt aussehen:

%Vor%

Sieht eleganter aus als das Dictionary und benötigt weniger Pflege.

    
anthares 08.02.2011, 10:44
quelle
7

Wie wäre es mit diesen Erweiterungen:

%Vor%

Damit können Sie Ihr Enum wie folgt aufbauen:

%Vor%

Und hole deine Liste so:

%Vor%     
Oliver 08.02.2011 10:48
quelle
3

Aktualisierung:
Danke an Oliver für den Hinweis System.Component.DescriptionAttribute . Hier ist, wie es geht:

%Vor%     
Chris S 08.02.2011 10:45
quelle
2

Sie könnten die Titel (INF0001) ... in einem Dictionary<infringementCategory, string>

speichern     
vc 74 08.02.2011 10:43
quelle
2

Siehe:

%Vor%

Und hier die Erweiterungsmethoden ...

%Vor%     
RobertoBr 08.02.2011 10:53
quelle
-1

Sie haben eine Reihe von Möglichkeiten:

  1. Ein Wörterbuch als vc74 vorgeschlagen. Dies ist effizient und entkoppelt Ihre Enum von der Eigenschaft.

  2. Eine switch-Anweisung

  3. Wenn Sie nur eine ganze Zahl zuordnen möchten, können Sie Folgendes verwenden:

    %Vor%

    und dann (int)myEnum in String.Format , um es in eine Zeichenkette der gewünschten Form umzuwandeln.

  4. Ein Attribut

    %Vor%

    Um die Leistung zu verbessern, können Sie die Reflektion einmal verwenden, um das Wörterbuch zu füllen.

CodesInChaos 08.02.2011 10:47
quelle

Tags und Links