Wie erhält man benutzerdefinierte Attributwerte für Enums?
Habe ich ein enum, wo jedes Mitglied verfügt über eine benutzerdefinierte Attribut angewendet wird. Wie kann ich den gespeicherten Wert abzurufen, die in jedem Attribut?
Ich jetzt tun:
var attributes = typeof ( EffectType ).GetCustomAttributes ( false );
foreach ( object attribute in attributes )
{
GPUShaderAttribute attr = ( GPUShaderAttribute ) attribute;
if ( attr != null )
return attr.GPUShader;
}
return 0;
Weiteres Problem ist, wenn es nicht gefunden, was soll ich zurückgeben? 0 ist implcity Cabrio irgendeinem enum, richtig? Deshalb habe ich Sie zurückgegeben.
Vergaß zu erwähnen, dass der obige code gibt 0 zurück für jeden enum-Mitglied.
Kommentar zu dem Problem
möglich, Duplikat der Was AttributeTarget sollte ich verwenden, für die enum-Mitglieder?
Nein, das ist anders. Hier bin ich einfach nur zu versuchen, um die benutzerdefinierten Attribute, die auf einem enum-Mitglied mit der spiegelung.
mögliche Duplikate von Erste Attribute Enum-Wert
InformationsquelleAutor der Frage Joan Venge | 2011-02-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es ein bisschen chaotisch zu tun, was Sie versuchen zu tun, was Sie haben zu verwenden, Reflexion:
Das retourniert eine Instanz der
GPUShaderAttribute
relevant sind, die eine mit der Aufschrift, bis auf den enum-Wert desEffectType
. Sie rufen es auf einen bestimmten Wert derEffectType
enum:Sobald Sie die Instanz des Attributs, können Sie die Werte heraus, die gekennzeichnet sind-bis auf die einzelnen enum-Werte.
InformationsquelleAutor der Antwort adrianbanks
Gibt es eine andere Methode, dies zu tun mit Generika:
InformationsquelleAutor der Antwort user1779271
Versuchen, eine generische Methode
Attribut:
Enum:
Generische Methode:
Invoke:
Ergebnis:
Montag
InformationsquelleAutor der Antwort George Kargakis
Ich habe nicht versucht dies, aber es sieht aus wie dieses blog-post beschreibt, was Sie suchen:
Enumeration Attribut helfen
InformationsquelleAutor der Antwort Sean Hunter