类似的东西可能会起作用:
private static IEnumerable<string> GetDescriptions(Type type)
{
var descs = new List<string>();
var names = Enum.GetNames(type);
foreach (var name in names)
{
var field = type.GetField(name);
var fds = field.GetCustomAttributes(typeof(DescriptionAttribute), true);
foreach (DescriptionAttribute fd in fds)
{
descs.Add(fd.Description);
}
}
return descs;
}
但是您可以在那里查看一些逻辑:例如可以以名称开头吗?你将如何处理多个描述属性?如果其中一些丢失了怎么办 - 你想要一个名字还是像上面一样跳过它?等等
刚刚回顾了你的问题。对于 VALUE 你会有类似的东西:
private static IEnumerable<string> GetDescriptions(Enum value)
{
var descs = new List<string>();
var type = value.GetType();
var name = Enum.GetName(type, value);
var field = type.GetField(name);
var fds = field.GetCustomAttributes(typeof(DescriptionAttribute), true);
foreach (DescriptionAttribute fd in fds)
{
descs.Add(fd.Description);
}
return descs;
}
但是不可能在单个字段上放置两个描述属性,所以我猜它可能只返回字符串。