将字符串转换为函数:执行我的代码的函数或事件

时间:2016-12-01 07:04:54

标签: c# string

我被困在一个我想要一个字符串来执行我的代码的函数或事件的位置。例如,如果

string somestr = "fun"; 

我想执行一个名为fun

的函数
public bool fun()
{
    return true;
}

我可以操纵somestr喜欢“执行乐趣”或“有趣()”等等。

我最好能想到,直到现在创建一个事件或函数,我应该检查并比较switch case中的字符串并执行函数或引发事件,如

public void ReceivedCommand()
{
    if(somestr == "fun")
    {
        bool b = fun();
    }
    else if(somestr == "Otherfun")
    {
        //Some Other Function
    }
}

但现在的情况是我有几百个功能和几个事件,用户可以选择其中任何一个。我非常肯定应该有一些东西能够以简单的方式解决我的问题,而不是写很多ifs和switch。

请您指出正确的方向我应该如何做到这一点。

3 个答案:

答案 0 :(得分:1)

您可以使用反射来使用Type.GetMethod(methodName)获取所需的方法。 见this

答案 1 :(得分:1)

你可以像这样动态地做到这一点

class MethodInvoker
{
    delegate void TestDelegate();

    public void fun()
    {
        Console.WriteLine("fun");
    }

    public void InvokeFromString(string functionName)
    {
        TestDelegate tDel = () => { this.GetType().GetMethod(functionName).Invoke(this, null); };
        tDel.Invoke();
    }
}

并像这样使用

var test = new MethodInvoker();
test.InvokeFromString("fun");

答案 2 :(得分:0)

使用反射。像这样:

Type type = this.GetType();
MethodInfo methodInfo = type.GetMethod(somestr);
methodInfo.Invoke(this, userParameters);

// And this requires "using System.Reflection;" 

尝试this链接,我希望它有效