在一个方法中,我想调用一个名称来作为参数的共享函数。
例如:
private shared function func1(byval func2 as string)
'call func2
end function
我该怎么做?
答案 0 :(得分:1)
你可以使用反射:
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);
答案 1 :(得分:1)
您可以使用反射来查找类和方法。
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");
}
}
}