Как я могу получить поля класса с помощью отражения, когда есть резервные поля?
У меня есть простой класс POCO, например
class C {
[MyAtrib]
public int i {get; set;}
[MyAtrib]
public int i2;
}
Когда я звоню:
GetType().GetFields(
BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
в этом классе (экземпляр) я не могу получить FieldInfo
для тех членов, которые автоматически создали геттеры / сеттеры (т.е. int i
выше).
На самом деле, я пытаюсь прочитать эти пользовательские атрибуты (MyAtrib
) и не может сделать это для тех свойств, которые имеют {get; set;}
,
Это почему? Я ожидаю получить оба i
и это (личное) вспомогательное поле, так как i
является публичным.
Могу ли я добраться до i
"s MyAtrib
как-то через отражение?
1 ответ
Решение
Вы получаете поля прямо сейчас, но public int i {get; set;}
это собственность. Вам необходимо получить свойства:
// note: properties -> generally public
GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public);