微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – 如何在没有*具有MethodInfo的情况下使用MSIL *在实例上调用方法?

我有一个遵循特定约定的类的数字属性.例如.

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));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐