C# 如何调用名称作为参数的共享函数
在一个方法中,我想调用一个共享函数,它的名字作为一个参数 例如:C# 如何调用名称作为参数的共享函数,c#,.net,asp.net,function,C#,.net,Asp.net,Function,在一个方法中,我想调用一个共享函数,它的名字作为一个参数 例如: private shared function func1(byval func2 as string) 'call func2 end function 我该怎么做?您可以使用反射: class Program { static void Main(string[] args) { new Program().Foo("Bar"); } public void Foo(str
private shared function func1(byval func2 as string)
'call func2
end function
我该怎么做?您可以使用反射:
class Program
{
static void Main(string[] args)
{
new Program().Foo("Bar");
}
public void Foo(string funcName)
{
GetType().GetMethod(funcName).Invoke(this, null);
}
public void Bar()
{
Console.WriteLine("bar");
}
}
或者,如果是静态方法:
typeof(TypeThatContainsTheStaticMethod)
.GetMethod(funcName)
.Invoke(null, null);
您可以使用反射来查找类和方法 C#中的示例:
namespace TestProgram {
public static class TestClass {
public static void Test() {
Console.WriteLine("Success!");
}
}
class Program {
public static void CallMethod(string name) {
int pos = name.LastIndexOf('.');
string className = name.Substring(0, pos);
string methodName = name.Substring(pos + 1);
Type.GetType(className).GetMethod(methodName).Invoke(null, null);
}
static void Main() {
CallMethod("TestProgram.TestClass.Test");
}
}
}