需求分析:
比如有一个 导入按钮,在不同的状态下,导入按钮要执行不同对象的Import方法,此时用反射就可以简化代码
_currentMod是当前选中的对象,_mod1,_mod2是不同类的对象,这些类都有名称为Import的方法。
private void BtnMod1_Click(object sender, EventArgs e)
{
_mod1.Visible = true;
_mod2.Visible = false;
_mod3.Visible = false;
_mod4.Visible = false;
_currentMod = _mod1;
AcitveButton(sender);
}
private void BtnMod2_Click(object sender, EventArgs e)
{
_mod1.Visible = false;
_mod2.Visible = true;
_mod3.Visible = false;
_mod4.Visible = false;
_currentMod = _mod2;
AcitveButton(sender);
}
接下来,我们就可以添加导入按钮的click事件方法。
private void BtnImport_Click_1(object sender, EventArgs e)
{
var type = _currentMod.GetType();
MethodInfo method = type.GetMethod("Import");
method.Invoke(_currentMod, parameters: new object[] { });
}
type.GetMethod可以获取方法对象,再采用invoke调用即可。