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

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

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

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

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


呼唤远方
浏览 1184回答 3
3回答

回首忆惘然

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

holdtom

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