使用typeof(Book).GetProperties()
获得的阵列PropertyInfo
实例。然后GetCustomAttributes()
对每个对象使用,PropertyInfo
以查看它们是否具有Author
Attribute类型。如果这样做,则可以从属性信息中获取属性的名称,并从属性中获取属性值。
沿着这些思路进行一些操作,以扫描类型以查找具有特定属性类型的属性,并在字典中返回数据(请注意,可以通过将类型传递给例程来使其更加动态):
public static Dictionary<string, string> GetAuthors()
{
Dictionary<string, string> _dict = new Dictionary<string, string>();
PropertyInfo[] props = typeof(Book).GetProperties();
foreach (PropertyInfo prop in props)
{
object[] attrs = prop.GetCustomAttributes(true);
foreach (object attr in attrs)
{
AuthorAttribute authAttr = attr as AuthorAttribute;
if (authAttr != null)
{
string propName = prop.Name;
string auth = authAttr.Name;
_dict.Add(propName, auth);
}
}
}
return _dict;
}