Abrufen statischer Feldwerte eines Typs mit Reflektion

8

Ich habe eine Reihe von statischen "Enumerations" -Klassen, die ich verwende, um aussagekräftige Variablennamen zu speichern, die sinnlose Codewerte darstellen, die ich in einer Eingabedatei erhalte. Hier ist ein Beispiel für eins.

%Vor%

Ich möchte eine Methode schreiben, die den Typ einer dieser statischen Klassen und einen Zeichenfolgenwert akzeptiert und bestimmt, ob der Wert eines der statischen Feldwerte ist. Ich weiß, wie man die Instanzfelder für ein bestimmtes Objekt bekommt, und ich weiß, wie man eine Liste von statischen Feldern für einen bestimmten Typ bekommt; Was ich nicht herausfinden kann ist, wie man die statischen Feldwerte ohne eine Instanz erhält. Hier ist, was ich bis jetzt habe.

%Vor%

Ich vermute, dass ich die Aufzählungsklassen nicht statisch machen könnte, nur um eine Instanz zu erstellen, die in meiner Validierungsmethode an FieldInfo.GetValue übergeben wird. Ich würde meine Klasse lieber so behalten, wie es ist, wenn ich kann.

Ich sehe eine Methode namens GetRawConstantValue . Es sieht gefährlich aus. Wird mir das geben, wonach ich suche? Irgendwelche anderen Ideen?

    
John M Gant 02.06.2009, 14:51
quelle

2 Antworten

24

Rufen Sie

auf %Vor%

und es wird gut. Sie benötigen keine Instanz für statische Mitglieder.

Ich glaube nicht, GetRawConstantValue ist das, was Sie wollen - ich würde mich an den obigen Code halten.

    
Jon Skeet 02.06.2009, 14:53
quelle
3

Wenn man sich anschaut, was man im größeren Sinne versucht, passt das vielleicht besser:

%Vor%

Und dann können Sie mithilfe dieses Links Intellisense-Unterstützung erhalten, die exakt mit der einer normalen Enum übereinstimmt:
Versteckte Funktionen von VB.NET?

    
Joel Coehoorn 02.06.2009 15:54
quelle

Tags und Links