Tag: dynamic method

生成动态方法以设置结构的字段而不是使用reflection

假设我有以下代码使用reflection更新struct的字段。 由于struct实例被复制到DynamicUpdate方法中, 因此需要在传递之前将其装箱到对象 。 struct Person { public int id; } class Test { static void Main() { object person = RuntimeHelpers.GetObjectValue(new Person()); DynamicUpdate(person); Console.WriteLine(((Person)person).id); // print 10 } private static void DynamicUpdate(object o) { FieldInfo field = typeof(Person).GetField(“id”); field.SetValue(o, 10); } } 代码工作正常。 现在,假设我不想使用reflection,因为它很慢。 相反,我想生成一些直接修改id字段的CIL并将该CIL转换为可重用的委托(例如,使用动态方法function)。 特别是,我想用s / t替换上面的代码,如下所示: static void Main() { var action […]