C# return class 中所有必需属性的列表
C# return a list of all required properties in a class
我正在尝试获取包含 属性 和 class 中具有必需属性的所有属性的 DisplayName 的字典。
我正在尝试使用我拥有的扩展方法,但 属性Descriptor 不包含 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;
}
当然,您只需要检查 属性 是否定义了 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;
}
这不行吗?
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);
我对 DisplayName
有点猜测,因为我不在电脑前...
我正在尝试获取包含 属性 和 class 中具有必需属性的所有属性的 DisplayName 的字典。
我正在尝试使用我拥有的扩展方法,但 属性Descriptor 不包含 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;
}
当然,您只需要检查 属性 是否定义了 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;
}
这不行吗?
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);
我对 DisplayName
有点猜测,因为我不在电脑前...