我正在尝试获取一个字典,其中包含具有Required Attribute的类中所有属性的Property和DisplayName。
我正在尝试使用此扩展方法,但PropertyDescriptor不包含Required的定义。任何方向都将不胜感激
public static Dictionary<string, string> GetDisplayNameList<T>()
{
var info = TypeDescriptor.GetProperties(typeof(T))
.Cast<PropertyDescriptor>()
.ToDictionary(p => p.Name, p => p.DisplayName);
return info;
}
答案 0 :(得分:1)
当然,您只需要检查该属性是否已在其上定义Required
属性。您可以通过.Attributes
访问此内容。例如:
public static Dictionary<string, string> GetDisplayNameList<T>()
{
var info = TypeDescriptor.GetProperties(typeof(T))
.Cast<PropertyDescriptor>()
.Where(p => p.Attributes.Cast<Attribute>().Any(a => a.GetType() == typeof(RequiredAttribute)))
.ToDictionary(p => p.Name, p => p.DisplayName);
return info;
}
答案 1 :(得分:0)
这不起作用吗?
catch()
我在这里猜测public static Dictionary<string, string> GetNameToDisplayNameDictionary(List<T>() list) =>
typeof(T)
.GetProperties()
.Where(p => p.GetAttribute<RequiredAttribute>() != null)
.ToDictionary(p => p.Name, p => p.GetAttribute<DisplayName>().Name);
,因为我离我的电脑不远......