using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection.Emit; namespace TestCases { struct MyStruct { public int x; public int y; } class Program { static void StructTest() { /* var inst = Activator.CreateInstance(typeof(MyStruct)); var fi = typeof(MyStruct).GetField("x"); fi.SetValue(inst, 23); var final = (MyStruct)inst; int x = 3; */ var method = new DynamicMethod("set_struct_field", null, new Type[] { typeof(object) }, true); var il = method.GetILGenerator(); il.Emit(OpCodes.Ldarg_0); il.Emit(OpCodes.Unbox, typeof(MyStruct)); il.Emit(OpCodes.Ldc_I4, 23); il.Emit(OpCodes.Stfld, typeof(MyStruct).GetField("x")); il.Emit(OpCodes.Ret); var fn = (Action)method.CreateDelegate(typeof(Action)); object inst = new MyStruct(); fn(inst); } static void Main(string[] args) { StructTest(); PetaJson.JsonEmit.Init(); PetaTest.Runner.RunMain(args); } } }