вызвать некоторые методы с неизвестным числом аргументов - PullRequest
0 голосов
/ 02 мая 2020

Я хочу иметь метод, который дает строку в качестве имени другого метода и массив параметров объекта, затем вызывает этот другой метод и передает параметры его аргументам. Как мне это сделать

пример:

public void callMethod(string methodName,params object[] args)
{
    //call other method by name
}

и другие методы:

public void methodOne(int i, float f)
{

}
public void methodTwo(string r)
{

}

1 Ответ

2 голосов
/ 02 мая 2020

Как указано в комментариях Progman , вы можете сделать это следующим образом.

private void Test()
{
    object[] args1 = new object[] { 2, (float)5.6 };
    callMethod("methodOne", args1);
    object[] args2 = new object[] { "Hello" };
    callMethod("methodTwo", args2);
}

public void callMethod(string methodName, params object[] args)
{
    Type thisType = this.GetType();
    System.Reflection.MethodInfo theMethod = thisType.GetMethod(methodName);
    theMethod.Invoke(this, args);
}

public void methodOne(int i, float f)
{
    Console.WriteLine("first:" + i + " second:" + f);
}

public void methodTwo(string r)
{
    Console.WriteLine(r);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...