Если вам дано значение AL
, и вы хотите найти значение перечисления, которое имеет этот атрибут, вы можете использовать небольшую рефлексию, чтобы выяснить это.
Допустим, наше перечисление выглядиткак это:
public enum Foo
{
[Display(Name = "Alabama", ShortName = "AL")]
Alabama = 1,
}
Вот небольшой код для получения Foo
, который имеет атрибут ShortName = 'AL':
var shortName = "AL"; //Or whatever
var fields = typeof (Foo).GetFields(BindingFlags.Static | BindingFlags.Public);
var values = from f
in fields
let attribute = Attribute.GetCustomAttribute(f, typeof (DisplayAttribute)) as DisplayAttribute
where attribute != null && attribute.ShortName == shortName
select f.GetValue(null);
//Todo: Check that "values" is not empty (wasn't found)
Foo value = (Foo)values.First();
//value will be Foo.Alabama.