检查 属性 是否具有 DisplayNameAttribute
Check if a property has a DisplayNameAttribute
我正在尝试验证 class 属性 是否具有 DisplayNameAttribute。我想根据该标准分析 属性 和 return 是真还是假。
这是我目前拥有的:
样本Class:
public class SampleDTO
{
[DisplayName("Some Display Name")]
public int propertyA { get; set; }
public int propertyB { get; set; }
}
方法:
public static DataTable ToDataTable<T>(this List<T> iList)
{
//(...)
PropertyDescriptorCollection propertyDescriptorCollection = TypeDescriptor.GetProperties(typeof(T));
for (int i = 0; i < propertyDescriptorCollection.Count; i++)
{
PropertyDescriptor propertyDescriptor = propertyDescriptorCollection[i];
Type type = propertyDescriptor.PropertyType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
type = Nullable.GetUnderlyingType(type);
//check if property has a DisplayNameAttribute
var att = type.GetCustomAttributes(typeof(DisplayNameAttribute), true);
//if it has, add to datatable
if (att != null || !att.Any())
{
//add to datatable...
}
}
//(...)
}
我的问题:
//check if property has a DisplayNameAttribute
var att = type.GetCustomAttributes(typeof(DisplayNameAttribute), true);
//if it has, add to datatable
if (att != null || !att.Any())
{
//add to datatable...
}
到目前为止,我无法成功检查 属性 是否具有 DisplayNameAttribute。
var t = typeof(SampleDTO);
var pi = t.GetProperty("PropertyA");
var hasAttr = Attribute.IsDefined(pi, typeof(DisplayName));
我正在尝试验证 class 属性 是否具有 DisplayNameAttribute。我想根据该标准分析 属性 和 return 是真还是假。
这是我目前拥有的:
样本Class:
public class SampleDTO
{
[DisplayName("Some Display Name")]
public int propertyA { get; set; }
public int propertyB { get; set; }
}
方法:
public static DataTable ToDataTable<T>(this List<T> iList)
{
//(...)
PropertyDescriptorCollection propertyDescriptorCollection = TypeDescriptor.GetProperties(typeof(T));
for (int i = 0; i < propertyDescriptorCollection.Count; i++)
{
PropertyDescriptor propertyDescriptor = propertyDescriptorCollection[i];
Type type = propertyDescriptor.PropertyType;
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(Nullable<>))
type = Nullable.GetUnderlyingType(type);
//check if property has a DisplayNameAttribute
var att = type.GetCustomAttributes(typeof(DisplayNameAttribute), true);
//if it has, add to datatable
if (att != null || !att.Any())
{
//add to datatable...
}
}
//(...)
}
我的问题:
//check if property has a DisplayNameAttribute
var att = type.GetCustomAttributes(typeof(DisplayNameAttribute), true);
//if it has, add to datatable
if (att != null || !att.Any())
{
//add to datatable...
}
到目前为止,我无法成功检查 属性 是否具有 DisplayNameAttribute。
var t = typeof(SampleDTO);
var pi = t.GetProperty("PropertyA");
var hasAttr = Attribute.IsDefined(pi, typeof(DisplayName));