使用.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);
}
答案 0 :(得分:7)
C#中的动态类型没有提供 - 您仍然必须在编译时知道要访问的成员的名称。 (你当然可以自己创建一个调用站点,并使用DLR的其他机器来解决问题,但它不会比使用反射更简单,并且它不会真正使用语言< / em>功能。)
答案 1 :(得分:5)
开源框架Impromptu-Interface具有自动化所有管道的方法,以使用DLR来解析really late这样的问题。它比使用空隙返回方法的反射速度快70%。
public void InvokeMethod(string methodName)
{
var reflectOb = new GCS_WebService();
Impromptu.InvokeMemberAction(reflectOb, methodName)
}