我有一个类的一些属性,这些属性遵循特定的约定。例如。
Person1 { get; set; }
Person2 { get; set; }
Person3 { get; set; }
我不想在类的实例上获取 MethodInfo
对象,而是做这样的事情:
...
il.Emit(OpCodes.Callvirt, [instance]["set_Person" + index]);
上面的代码行是说明性的,而不是我认为应该的。
有谁知道我该怎么做?
最佳答案
这是做不到的,我不明白这一点或任何潜在的好处。 MSIL Callvirt 指令不采用描述调用内容的字符串,它采用指向特定类型的特定方法的元数据标记,通过反射获取该值的唯一方法是使用 MethodInfo 实例。
这看起来确实不是一个复杂的选择:
il.Emit(OpCodes.Callvirt, type.GetMethod("set_Person" + index));
关于c# - 如何在没有 MethodInfo 的情况下使用 MSIL *调用实例上的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12636566/