使用Dynamic而不是reflect来按名称调用方法

Ble*_*ped 7 c# reflection methods dynamic .net-4.0

使用.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);
    }
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

C#中的动态类型没有规定 - 您要访问的成员的名称仍然必须在编译时知道.(你当然可以自己创建一个调用站点,并使用DLR的其他机器来解决问题,但它不会比使用反射更简单,并且它不会真正使用语言功能.)


jbt*_*ule 5

开源框架,即兴接口有方法的自动化所有使用DLR来解决管道夜已这样.它使用void返回方法比反射快70%.

  public void InvokeMethod(string methodName)
    {
        var reflectOb = new GCS_WebService();
        Impromptu.InvokeMemberAction(reflectOb, methodName)
    }
Run Code Online (Sandbox Code Playgroud)