у меня есть перечисление с пользовательскими атрибутами, что-то вроде:Как отменить разрешение настраиваемых атрибутов?
public enum EnumStatus
{
[CharValue('*')]
Empty,
[CharValue('A')]
value1,
[CharValue('P')]
value2,
}
«прямой» путь кажется легким, приходя со значением перечисления получать пользовательский атрибут с помощью отражения, GetCustomAttributes и что подобное.
, но я хочу какое-то обратное решение. , имеющий значение char, я хочу иметь значение enum для работы.
что-то вроде:
public static Enum GetEnumValue(this Enum source, char value)
{...}
, который должен возвращать EnumStatus.value1, если я поставил 'A' в качестве параметра значение.
любые идеи? я не хочу делать дополнительную хэш-таблицу, откладывая перечисления.
большое спасибо!
Большое спасибо! Атрибут описания по умолчанию уже используется. Поэтому мне нужен другой способ. Но, возможно, я смогу использовать этот пример. Он не обязательно должен быть общим, но мне нужны «общие» атрибуты. –
из примера я сделал это здесь: общественности статической Т GetEnum (значение символов) { вар типа = TypeOf (Т); , если (type.IsEnum) { Еогеасп (вар поле в type.GetFields()) { атрибут вар = Attribute.GetCustomAttribute (поле, TypeOf (CharValueAttribute)) в качестве CharValueAttribute; если (атрибут! = Null) { если (атрибут.Value == значение) возвращение (T) field.GetValue (null); } } } return default (T); } –