首页 > 解决方案 > 调用带有参数作为字符串的函数

问题描述

我需要调用一个带有参数作为字符串的函数。看看下面给出的例子: 注意用 ."method(parameter1,parameter2)"括起来""

string methodName = "method(3,4)"
string f = methodName ;

public string method(int one, int two){
    return "hi";
}

以上是预期的结果。我将调用一个带有字符串方法名称的函数,后面跟着它的参数:

到目前为止我已经尝试过:

  1. 我曾尝试使用反射,但它没有调用该方法。

  2. 我怎样才能解决这个问题 ?

有没有其他方法可以做到这一点?

Type type = typeof(MyClass);
var method = type.GetMethod("method");
MyClass  cc = new MyClass();
string re= (string) method.Invoke(cc, new object[] {1,3});

标签: c#system.reflection

解决方案


这是一个如何使用反射调用方法的示例。

如果要将方法的输入作为字符串的一部分处理,则必须在调用方法时解析字符串的该部分并将值作为对象数组中的实例传递。

class Program
{
    static void Main(string[] args)
    {
        var m = typeof(Program).GetMethod("PrintValue");
        var i  = new Program();
        m.Invoke(i, BindingFlags.Default, null, new object[] {42}, CultureInfo.CurrentCulture);
    }

    public void PrintValue(int i)
    {
        Console.WriteLine(i);
    }
}

推荐阅读