C# 使用动态而不是反射按名称调用方法

C# 使用动态而不是反射按名称调用方法,c#,reflection,dynamic,.net-4.0,methods,C#,Reflection,Dynamic,.net 4.0,Methods,使用.NET-4.0,在不使用反射的情况下,我如何使用Dynamic来完成以下任务 public void InvokeMethod(string methodName) { Type t = typeof(GCS_WebService); GCS_WebService reflectOb = new GCS_WebService(); MethodInfo m = t.GetMethod(methodName);

使用.NET-4.0,在不使用反射的情况下,我如何使用Dynamic来完成以下任务

     public void InvokeMethod(string methodName)
    {
        Type t = typeof(GCS_WebService);
        GCS_WebService reflectOb = new GCS_WebService();
        MethodInfo m = t.GetMethod(methodName);
        m.Invoke(reflectOb, null);
    }
C#中的动态类型并没有提供这种功能——您要访问的成员的名称在编译时仍然必须是已知的。(当然,您可以自己创建呼叫站点,并使用DLR的其他机制来解决问题,但这不会比使用反射更简单,也不会真正使用语言功能。)

开源框架提供了自动化所有管道的方法来使用DLR来解决这样的问题。它的运行速度比使用void返回方法的反射快70%

  public void InvokeMethod(string methodName)
    {
        var reflectOb = new GCS_WebService();
        Impromptu.InvokeMemberAction(reflectOb, methodName)
    }

它不会更简单,但可以更快(假设它可以利用调用站点缓存)。谢谢!我在这里看到其他线程提到它可以实现,但没有示例。现在我知道为什么没有例子了。