为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何使用反射来调用私有方法?

请问如何使用反射来调用私有方法?

C#
翻过高山走不出你 2019-08-02 03:02:41
如何使用反射来调用私有方法?我的类中有一组私有方法,我需要根据输入值动态调用一个方法。调用代码和目标方法都在同一个实例中。代码如下:MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType);dynMethod.Invoke(this, new object[] { methodParams });在这种情况下,GetMethod()不会返回私有方法。什么BindingFlags我需要供应给GetMethod()这样才能找到私有的方法?
查看完整描述

3 回答

?
慕森卡

TA贡献1806条经验 获得超8个赞


只需更改代码以使用重载版本GetMethod它接受BindingFlags:

MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);dynMethod.Invoke(this, new object[] { methodParams });

这是BindingFlags枚举文档.


查看完整回答
反对 回复 2019-08-03
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

BindingFlags.NonPublic不会自行返回任何结果。事实证明,把它和BindingFlags.Instance就能做到这一点。

MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType, 
    BindingFlags.NonPublic | BindingFlags.Instance);



查看完整回答
反对 回复 2019-08-03
  • 3 回答
  • 0 关注
  • 497 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信