如何按名称找到我的方法“button_Click”?如果我公之于众,那就行了,但我宁愿把它私有化。
class Test : BaseTest
{
public Test()
{
LoadMethod();
}
}
class BaseTest
{
public void LoadMethod()
{
//WHY IS THIS NULL???
var eventMethod = GetType().GetMethod("button_Click", BindingFlags.NonPublic | BindingFlags.Instance);
}
void button_Click(object sender, EventArgs e) { }
}
答案 0 :(得分:3)
为什么
GetMethod
会返回null?
由于运行时类型不是BaseTest
类型,因此类型为Test
,而Test
未定义名为button_Click
的方法(因为它在您的基类中是private
。
如果您拆分GetType()
调用并运行调试器,则会看到返回的类型为Test
类型。
如果您致电GetType().BaseType
,那么您实际上会看BaseTest
:
var baseType = GetType().BaseType;
if (baseType != null)
{
var eventMethod = baseType.GetMethod("button_Click", BindingFlags.NonPublic |
BindingFlags.Instance);
}