【发布时间】:2012-09-20 03:14:54
【问题描述】:
我有一个遵循特定约定的类的数字属性。例如。
Person1 { get; set; }
Person2 { get; set; }
Person3 { get; set; }
我不想在类的实例上获取MethodInfo 对象,而是做这样的事情:
...
il.Emit(OpCodes.Callvirt, [instance]["set_Person" + index]);
上面的代码行是说明性的,并不是我认为的。
有谁知道我怎么能做到这一点?
【问题讨论】:
-
使用 DynamicMethod 类。在 MSDN Library 文章中有关于如何使用它的很好的文档。
-
索引从何而来?是您正在创建的方法的参数吗?还是应该在那种方法中保持不变?
-
@svick:“索引”来自 DynamicMethod 创建者中的 for 循环。
-
那么你为什么不想得到
MethodInfo?这不会对生成代码的性能产生任何影响。 -
不,不会。在这种情况下,运行时没有
MethodInfo。
标签: c# reflection dynamic-programming cil