예, 그것의 가능한. 한마디로
는 숨겨진 (개인/보호/내부) 필드의 값을 변경
Type typeInQuestion = typeof(TypeHidingTheField);
FieldInfo field = typeInQuestion.GetField("FieldName", BindingFlags.NonPublic | BindingFlags.Instance);
field.SetValue(instanceOfObject, newValue);
그런 짓을. 읽을 수있는 해당 FieldInfo.GetValue(...)
을 사용하십시오. 두 가지를 겸해서 원하는 스와핑 작업을 얻으십시오.
나를 BindingFlags에 붙들어 두지 마십시오. (나는 항상 처음 시도에서 잘못 이해하는 것 같습니다) 정확한 구문이지만, 기본적으로 그 것입니다.
참조 용으로 System.Reflection을 찾으십시오. Fasterflect를 사용하는 경우
typeof(MyType).SetField("MyField", anotherObject);
이
, 당신은 귀찮게 할 필요가 없습니다 : 당신이 .NET 3.5을 사용하는 경우
당신이 몇 가지 코드를 공유 할 수 (cartonclass의, 정수) SetFieldValue (3 cartonyoudropped, "survivingeggcount"), 제발 ? –
속성이나 필드를 변경하려는 값입니까? 그것이 속성이라면, 그 뒤에있는 들판의 이름을 아십니까? 기본적으로 속성에 접근 자 설정이없는 경우에는 리플렉션을 사용하여 값을 변경할 수 없습니다. 그러나 필드가 뒤에 있으면 private 인 경우에도 리플렉션을 사용하여 변경할 수 있습니다. 어떤 경우에는 (나는 그것에 대한 참조를 기억하지 못함) 개인 필드에 대한 반영 액세스를 거부 할 수도 있습니다. –