猿问

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

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

我的类中有一组私有方法,我需要根据输入值动态调用一个方法。调用代码和目标方法都在同一个实例中。代码如下:

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

在这种情况下,GetMethod()不会返回私有方法。什么BindingFlags我需要供应给GetMethod()这样才能找到私有的方法?


翻过高山走不出你
浏览 498回答 3
3回答

慕森卡

只需更改代码以使用重载版本GetMethod它接受BindingFlags:MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType,      BindingFlags.NonPublic | BindingFlags.Instance);dynMethod.Invoke(this, new object[] { methodParams });这是BindingFlags枚举文档.

慕盖茨4494581

BindingFlags.NonPublic不会自行返回任何结果。事实证明,把它和BindingFlags.Instance就能做到这一点。MethodInfo dynMethod = this.GetType().GetMethod("Draw_" + itemType,      BindingFlags.NonPublic | BindingFlags.Instance);
随时随地看视频慕课网APP
我要回答