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

使用.NET-4.0,如何在不使用reflection的情况下使用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的其他机制来解决问题,但它不会比使用reflection简单,并且它不会真正使用语言function。)

开源框架Impromptu-Interface有自动化所有管道的方法,使用DLR来解决这个问题。 它使用void返回方法比reflection快70%。

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