从 C 中的字符串调用函数#
2022-08-30 06:42:17
我知道在php中你可以做一个这样的调用:
$function_name = 'hello';
$function_name();
function hello() { echo 'hello'; }
这在 .Net 中是否可能?
我知道在php中你可以做一个这样的调用:
$function_name = 'hello';
$function_name();
function hello() { echo 'hello'; }
这在 .Net 中是否可能?
是的。您可以使用反射。像这样:
Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);
使用上面的代码,调用的方法必须具有 访问修饰符 。如果调用非公共方法,则需要使用参数,例如:public
BindingFlags
BindingFlags.NonPublic | BindingFlags.Instance
Type thisType = this.GetType();
MethodInfo theMethod = thisType
.GetMethod(TheCommandString, BindingFlags.NonPublic | BindingFlags.Instance);
theMethod.Invoke(this, userParameters);
您可以使用反射调用类实例的方法,执行动态方法调用:
假设您在实际实例中有一个名为 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);