문제

Windows Phone 7 응용 프로그램에서 객체에 필드를 설정하는 데 어려움을 겪고 있습니다 (컴팩트 프레임 워크와 관련된 것과 관련이 없으며 Windows Phone 7에 특정한 의심).나는 이것이 struct 유형의 값을 설정하는 데 특별히 믿습니다.일반적으로 다음을 사용합니다.

// fieldName is the name of the field I'm interested in setting
FieldInfo fieldInfo = target.GetType().GetField(fieldName);

// target is the object I'm setting the value on
// value is the value that I am setting
fieldInfo.SetValueDirect(__makeref(target), value);
.

불행히도 SetValueDirect는 Windows Phone 7에 존재하지 않으며 단순히 SetValue를 사용하는 것은 아무 것도 대상으로 할 수 없습니다.반사를 통해 WP7에서 struct 필드를 설정하는 다른 방법이 있습니까?

도움이 되었습니까?

해결책

구조체를 상자, setValue, 및 Unbox 를 사용해야합니다.매우 우아하지는 않지만, 구조체가 일반적으로 읽혀야하는 또 다른 좋은 이유가 있습니다.현재 현재 상자를 캡처하지 않고 암시 적 상자를 사용하여 암시 적 상자를 사용하여 권장 값을 삭제하는 것으로 폐기하는 것으로 알려지지 않는 마지막 단계를 누락 가능합니다.시각적으로 :

MyStruct val = ...
object boxedVal = val;
fieldInfo.SetValue(boxedVal, newValue);
val = (MyStruct)boxedVal;
.

더 일반적으로 메타 프로그래밍은 CF에서 다소 약합니다.이 작업을 수행하는 경우 전체 .NET을 통해 미리 메타 프로그래밍 을 미리 에서 수행하고, CF 어셈블리를 검사하고 필요한 기능을 캡슐화하는 CF 어셈블리를 생성하는 방법이 있습니다.나는이 목적을 위해 ikvm.reflection을 사용하여 성공을 거두었습니다 (inbuilt .NET 반사 은 이것을 할 수 없습니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top