我有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?
答案 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它具有哪些参数类型。