3
У меня есть следующие перечисления:Как получить список значений и описаний перечисления?
public enum AlertSeverity
{
[Description("Informative")]
Informative = 1,
[Description("Low risk")]
LowRisk = 2,
[Description("Medium risk")]
MediumRisk = 3,
[Description("High risk")]
HighRisk = 4,
Critical = 5
}
, и я хочу, чтобы получить List<KeyValuePair<string, int>>
всех описаний/имен и значений, поэтому я пытался что-то вроде этого:
public static List<KeyValuePair<string, int>> GetEnumValuesAndDescriptions<T>() where T : struct
{
var type = typeof(T);
if (!type.IsEnum)
throw new InvalidOperationException();
List<KeyValuePair<string, int>> lst = new List<KeyValuePair<string, int>>();
foreach (var field in type.GetFields())
{
var attribute = Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute; // returns null ???
if (attribute != null)
lst.Add(new KeyValuePair<string, int>(attribute.Description, ((T)field.GetValue(null)).ToInt()));
else
lst.Add(new KeyValuePair<string, int>(field.Name, ((T)field.GetValue(null)).ToInt())); // throws exception: "Non-static field requires a target" ???
}
return lst;
}
Я не знать, почему, но атрибут var возвращает значение null и поле. Исключение исключений «Нестатическое поле требует цели»
Он отлично работает, спасибо большое :) –