从 C 中的字符串调用函数#

2022-08-30 06:42:17

我知道在php中你可以做一个这样的调用:

$function_name = 'hello';
$function_name();

function hello() { echo 'hello'; }

这在 .Net 中是否可能?


答案 1

是的。您可以使用反射。像这样:

Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);

使用上面的代码,调用的方法必须具有 访问修饰符 。如果调用非公共方法,则需要使用参数,例如:publicBindingFlagsBindingFlags.NonPublic | BindingFlags.Instance

Type thisType = this.GetType();
MethodInfo theMethod = thisType
    .GetMethod(TheCommandString, BindingFlags.NonPublic | BindingFlags.Instance);
theMethod.Invoke(this, userParameters);

答案 2

您可以使用反射调用类实例的方法,执行动态方法调用:

假设您在实际实例中有一个名为 hello 的方法(this):

string methodName = "hello";

//Get the method information using the method info class
 MethodInfo mi = this.GetType().GetMethod(methodName);

//Invoke the method
// (null- no parameter for the method call
// or you can pass the array of parameters...)
mi.Invoke(this, null);

推荐