调用静态类的方法给予其类型名称和方法名作为字符串(Calling a method on a sta

2019-07-17 21:58发布

我怎么可能去调用方法上给出的类名和方法名的静态类,好吗?

例如:

由于System.EnvironmentGetFolderPath ,我想使用Reflection来调用Environment.GetFolderPath()

Answer 1:

只是

Type.GetType(typeName).GetMethod(methodName).Invoke(null, arguments);

其中typeName是类型为字符串的名称, methodName是所述方法作为字符串的名称, arguments是包含参数来调用该方法的对象的阵列。



Answer 2:

首先,你需要获得类型(通过迭代上装配使用反射)

看到此链接了解详细信息: http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx

或使用

Assembly.GetType

一旦你手上的类型,你可以使用反射在会员或迭代

MethodInfo method = typeof(MyClass).GetMethod("MyMethod");

那么你可以使用MethodInfo.Invoke和参数传递给调用方法时要调用它。



Answer 3:

System.Reflection.Assembly info = typeof(System.Environment).Assembly;

Type t = info.GetType("System.Environment");
MethodInfo m = t.GetMethod("GetFolderPath");

object result = m.Invoke(null, arguments);


Answer 4:

你在做什么这里反映评为型Environment和使用GetProperyGetGetMethod方法得到的get方法Environment.CurrentDirectory像这样的财产;

var getMethod = typeof(Environment).GetProperty("CurentDirectory", BindingFlags.Public | BindingFlags.Static).GetGetMethod();
var currentDirectory = (string)getMethod.Invoke(null, null);

调用属性的get方法返回它的价值,是equivilent到;

var value = Environment.CurrentDirectory;


Answer 5:

这里是你会做什么基本轮廓:

  1. 扫描当前的AppDomain中的所有对象 - 找到适合你知道什么类名是一个
  2. 获取与您知道对象的名称的静态方法
  3. 动态地调用它。

编辑:这,如果你不知道的静态类的命名空间将工作。 否则,使用丹尼尔·布鲁克纳的解决方案,它的简单得多。



文章来源: Calling a method on a static class given its type name and method names as strings
标签: c# reflection