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");
    }

  }

}