2
간단한 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
님의 MyAtrib
에 갈 수 있습니까?
getters 및 setter가있는 필드는 필드가 아닙니다. 그들은 속성입니다. –
'GetProperties' 사용 –
BindingFlags.NonPublic을 사용하면 뒷받침 필드를 확실히 얻을 수 있습니다. 그것은 말할 수없는 이름, ' k__BackingField'을 가지고 있습니다. 이 속성은 뒷받침 필드에 적용되지 * 않습니다 * 속성에 있습니다. GetProperty()를 호출하려면 GetProperty()를 호출해야합니다. –