C# - GetMethod返回null

时间:2015-07-13 16:44:26

标签: c#

我有stold课程:

A

然后我得到了public abstract class A { } 类来自它:

B

为什么public sealed class B : A { public void SomeMethod() { var method = this.GetType().GetMethod("AddText"); } private void AddText(string text) { ... } } 会返回null?

2 个答案:

答案 0 :(得分:17)

默认情况下,Reflection只会搜索公共方法。

您需要传递BindingFlags.Instance | BindingFlags.NonPublic

答案 1 :(得分:13)

var methodInfo = this.GetType().GetMethod("AddText", BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(string) }, null);

您的方法有一个参数,您需要使用接受类型数组的重载作为参数类型和绑定标志。

在.net中,方法签名基于其名称,返回类型及其参数。

因此,如果您的方法有参数,您必须通过Type []来告诉Reflection它具有哪些参数类型。