使用此方案
public class CustomerMetaData
{
[DataType(DataType.EmailAddress)]
public String EmailAddress {get;set;}
[DataType(DataType.Url)]
public String UrlUser {get;set;}
}
我需要通过反射此类的所有属性的DataType,但广泛的网络搜索,我找不到围绕此类DataAttribute的任何解决方案。
我解释了一下,我不需要知道属性Like,String,Boolean ....的数据类型。我需要[DataType(DataType .....)]属性的一部分。
提前致谢。
有些想法?
答案 0 :(得分:5)
您需要GetCustomAttributes方法。
这是来自记忆,但它会是这样的:
PropertyInfo[] props = typeof(CustomerMetaData).GetProperties();
foreach(PropertyInfo p in props)
{
object[] attribs = p.GetCustomAttributes(false);
// do something with the attributes
}
查找GetProperties和GetCustomAttributes方法以确保参数:如果您的任何属性是非公开的,则必须指定一些其他信息以获取它们的信息。
答案 1 :(得分:0)
在考虑了5年后......
PropertyInfo[] props = typeof(CustomerMetaData).GetProperties();
foreach(PropertyInfo p in props)
{
IEnumerable<DataTypeAttibute> dataTypeAttrs = p.GetCustomAttributes<DataTypeAttribute>(false);
foreach(var attr in dataTypeAttrs)
{
DataType dataType = attr.DataType;
// do something with the datatype
}
}