ich habe eine Enumeration mit benutzerdefinierten Attributen, so etwas wie:Wie können benutzerdefinierte Attribute aufgelöst werden?
public enum EnumStatus
{
[CharValue('*')]
Empty,
[CharValue('A')]
value1,
[CharValue('P')]
value2,
}
des „Vorwärts“ Weg scheint einfach, mit einem ENUM-Wert kam ein immer das benutzerdefinierte Attribut mithilfe von Reflektion, GetCustomAttributes und so.
aber ich möchte eine Art von Reverse-Auflösung. mit einem char Wert, ich möchte einen Enum-Wert haben, mit zu arbeiten.
so etwas wie:
public static Enum GetEnumValue(this Enum source, char value)
{...}
die EnumStatus.value1 zurückkehren sollte, wenn ich ein 'A' Parameter als Wert setzen.
irgendwelche Ideen? Ich möchte keine extra Hashtable machen und die Enums verschieben.
vielen dank!
Vielen Dank! Das Beschreibungsattribut "default" wird bereits verwendet. Deshalb brauche ich einen anderen Weg. Aber vielleicht kann ich dieses Beispiel verwenden. Es muss nicht generisch sein, aber ich brauche "generische" Attribute. –
aus dem Beispiel habe ich diese hier: public static T GetEnum (char-Wert) { var type = typeof (T); if (type.IsEnum) { foreach (var Feld in type.GetFields()) { var attribute = Attribute.GetCustomAttribute (Feld, typeof (CharValueAttribute)) als CharValueAttribute; if (Attribut! = Null) { if (attribute.Value == value) Rückgabe (T) field.GetValue (null); } } } Rückstellung Standard (T); } –