안녕하세요, 모두리플렉션을 통해 겉보기에 공개 속성에 액세스하기
클래스의 공용 속성에 액세스하려는 시도가 어떤 문제인지 결정하는 데 어려움을 겪고 있습니다.
내 필요성은 매우 기본입니다. 내 일상에 올바르게 구현 된 공용 클래스가 있는데, 리플렉터 덕분에이 클래스에는 내가 참조해야하는 속성이 있다는 것을 알았습니다.
문제는 속성을 이렇게 정의되어있다 :
는public Vector3 root {
[MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] get;
[MethodImpl(MethodImplOptions.InternalCall), WrapperlessIcall] set;
}
내가 직면하고있어 문제는 속성을 가져에서 내 모든 시도가 단순히 실패 할 것입니다. 나는 유형을 인스턴스화, 및 바인딩 플래그
Type vtype = myobj.getType()
PropertyInfo[] vproperties;
vproperties = vtype.GetProperties();//(BindingFlags.Default | BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.NonPublic);
for (int vpropertycounter =0 ; vpropertycounter < vproperties.Length ; vpropertycounter++) {
Console.write(varbodyproperties[varpropertycounter].Name); <= 'root' never appears in this list
}
내 의심과 의심의 여지가 공전의 getter 및 setter는 'wrapperless 때문에 루트 속성이'공개 대상 '하지 않을 수 있다는 사실 주위의 모든 가능한 조합을 시도했습니다 '및'내부 '. 슬프게도 이것이 극복 할 수 있을지 모르겠다.
이 속성에 꼭 액세스 할 수 있는지, 가능하면 어떻게 할 수 있는지 알고 싶습니다.
모든 의견을 환영합니다.
미리 감사드립니다.
참고 : "myobj.root"와 같이 속성을 직접 지정하면 알 수없는 속성에 대한 컴파일러 오류가 발생합니다.
당신의 제안에 감사 드리며, 저는 실제로 setter와 getter를 호출 할 수 있다는 것을 깨달았습니다. 그래서 반사 반복을 위해 잘못된 유형을 사용하고 있다는 것을 알았습니다! – roamcel