在静态类上调用方法,并将其类型名称和方法名称作为字符串

Dan*_*ott 25 c# reflection

如果给出类名和方法名,我怎样才能在静态类上调用方法呢?

例如:

鉴于System.EnvironmentGetFolderPath,我想Reflection用来打电话Environment.GetFolderPath().

Dan*_*ner 42

只是

Type.GetType(typeName).GetMethod(methodName).Invoke(null, arguments);
Run Code Online (Sandbox Code Playgroud)

where typeName作为字符串的类型的名称,是作为字符串methodName的方法的名称,并且arguments是包含调用方法的参数的对象数组.

  • 哇,好吧,这可行 - 不知道 Type.GetType - 只需确保静态类名完全符合命名空间 (2认同)

Ahm*_*laf 6

首先,您需要获取类型(通过使用反射迭代程序集)

有关详细信息,请参阅此链接:http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx

或使用

Assembly.GetType
Run Code Online (Sandbox Code Playgroud)

一旦您掌握了类型,您就可以使用反射或迭代成员

MethodInfo method = typeof(MyClass).GetMethod("MyMethod");
Run Code Online (Sandbox Code Playgroud)

然后,MethodInfo.Invoke当您想要调用该方法时,您可以使用并传递参数来调用该方法。