Have fun with sci.dog

C# 反射调用对象的方法

需求分析:

比如有一个 导入按钮,在不同的状态下,导入按钮要执行不同对象的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调用即可。

赞(0)
未经允许不得转载:SciDog » C# 反射调用对象的方法

评论 抢沙发