Meine Frage wird am besten mit einem Beispiel veranschaulicht.Zusätzliche Informationen mit .NET Enum verknüpfen
Angenommen, ich habe die ENUM:
public enum ArrowDirection
{
North,
South,
East,
West
}
Ich mag jede Richtung den Einheitsvektor zuzuordnen diese Richtung entspricht. Zum Beispiel möchte ich etwas, das für North, (-1, 0) für West, etc. zurückgibt. Ich weiß, dass Sie in Java eine Methode innerhalb der Enumeration deklarieren könnten, die diese Funktionalität bereitstellen könnte.
Meine aktuelle Lösung ist eine statische Methode - innerhalb der Klasse, die die Enum definiert - die einen Vektor zurückgibt, der der in ArrowDirection übergebenen entspricht (die Methode verwendet eine HashTable, um die Suche durchzuführen, aber das ist nicht wirklich wichtig) . Das scheint ... unrein.
Frage:
Gibt es eine Best-Practice-Lösung zum Speichern zusätzlicher Informationen, die einer Enum in .NET entsprechen?
Das ist ziemlich cool. Obwohl ich über Erweiterungen wusste, habe ich nie gedacht, sie für Enum-Erweiterung zu verwenden –
Ja, ich entweder zuerst. Ein Freund hat mir davon erzählt. Es ist sehr schön. Ich war auch überrascht zu erfahren (kürzlich, hier auf SO), dass Sie eine Erweiterungsmethode für einen Nullwert aufrufen können. Es funktioniert immer noch, weil es eine statische Methode ist. Wie üblich hat das C# -Team großartige Arbeit geleistet, indem es diese Funktionen durchdacht hat. –
Sie erhalten die akzeptierte Antwort. Ich habe es versucht und es funktioniert perfekt. Das einzige ist. Wo genau sollte ich das Enum deklarieren? Wenn ich es in der Klasse lasse, heißt es, dass es weniger zugänglich ist. Ich musste eine "ClassName_Enums" -Klasse erstellen, damit es funktioniert ... – colithium