gpt4 book ai didi

c# - 如何在 Windows Phone 7 中的对象上设置结构类型的字段

转载 作者:太空宇宙 更新时间:2023-11-03 11:18:54 25 4
gpt4 key购买 nike

我在为 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,然后取消装箱。不是很优雅,但结构通常应该是只读的另一个很好的理由。目前您可能会省略最后一步(通过使用隐式框而不捕获框,您对装箱值的更改将被丢弃)。视觉上:

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

更一般地说,元编程在 CF 上相当薄弱。如果您要做很​​多这样的事情,可以通过完整的 .NET 进行元编程提前,检查 CF 程序集并生成封装您需要的功能的 CF 程序集。为此,我已成功使用 IKVM.Reflection(内置的 .NET 反射不能做到这一点)。

关于c# - 如何在 Windows Phone 7 中的对象上设置结构类型的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11698172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com