Используйте typeof(Book).GetProperties()
, чтобы получить массив экземпляров PropertyInfo
. Затем используйте GetCustomAttribute()
для каждого PropertyInfo
, чтобы увидеть, есть ли у каждого из них тип атрибута Author
. Если это так, вы можете получить имя свойства из информации о свойствах и значений атрибутов из атрибута.
Что-то в этих строках для сканирования типа свойств, имеющих определенный тип атрибута, и возврата данные в словаре (обратите внимание, что это можно сделать более динамичным, передав типы в подпрограмму):
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;
}