使用反射将值写入struct var成员不起作用,但它适用于类

Not*_*bad 4 c# reflection system.reflection

我一直在这里阅读stackoverflow如何使用反射写入类var成员.我使用类似的东西:

typeof(MyClass).GetField("myvar", BindingFlags.Public | BindingFlags.Instance).SetValue(instancie, 10);
Run Code Online (Sandbox Code Playgroud)

这适用于类,但如果我在读取myvar时对Struct而不是类执行相同操作,我总是得到0(int的默认构造值).这是我使用的代码:

struct MyStruct
{
    public int myvar;
}

MyStruct instance=new MyStruct();

typeof(MyStruct).GetField("myvar", BindingFlags.Public | BindingFlags. BindingFlags.Instance).SetValue(instance, 10);
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么这可能是hapenning?

Mar*_*ell 5

当您传入"实例"时,这是一个框 - 它是数据的包装克隆,您稍后将丢弃.

要在这里使用反射:

object obj = instance; // box
blah.SetValue(obj, value); // mutate inside box
instance = (YourType)obj; // unbox
Run Code Online (Sandbox Code Playgroud)