开发者

Using Dynamic instead of reflection to call method by name

Using .NET-4.0, how would I use Dynamic to accomplish the following without using reflection?

     public void InvokeMethod(string methodName)
    {
     开发者_JAVA技巧   Type t = typeof(GCS_WebService);
        GCS_WebService reflectOb = new GCS_WebService();
        MethodInfo m = t.GetMethod(methodName);
        m.Invoke(reflectOb, null);
    }


Dynamic typing in C# doesn't provide for that - the names of the members you want to access still has to be known at compile-time. (You could create the call site yourself of course and use the rest of the machinery of the DLR to resolve things, but it wouldn't be any simpler than using reflection, and it wouldn't really be using the language features.)


The open source framework Impromptu-Interface has methods the automate all the plumbing to use the DLR to resolve really late like this. It runs 70% faster than reflection with void returning methods.

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜