Ответ 1
Здесь есть несколько отдельных проблем.
-
typeof(MyClass).GetCustomAttributes(bool)
(илиGetType().GetCustomAttributes(bool)
) возвращает атрибуты самого класса, а не атрибуты для членов. Вам нужно будет вызватьtypeof(MyClass).GetProperties()
, чтобы получить список свойств в классе, а затем проверить каждый из них. -
Как только вы получили свойство, я думаю, вы должны использовать
Attribute.GetCustomAttribute()
вместоMemberInfo.GetGustomAttributes()
, так как вы точно знаете, какой атрибут вы ищете.
Вот несколько фрагментов кода, которые помогут вам начать:
PropertyInfo[] properties = typeof(MyClass).GetProperties();
foreach(PropertyInfo property in properties)
{
StoredDataValueAttribute attribute =
Attribute.GetCustomAttribute(property, typeof(StoredDataValueAttribute)) as StoredDataValueAttribute;
if (attribute != null) // This property has a StoredDataValueAttribute
{
property.SetValue(instanceOfMyClass, attribute.DataValue, null); // null means no indexes
}
}
EDIT. Не забывайте, что Type.GetProperties()
возвращает только общедоступные свойства по умолчанию. Вам нужно будет использовать Type.GetProperties(BindingFlags)
для получения других видов свойств.