当前位置: 首页 > 编程语言 > C#

在静态类上调用方法并将其类型名和方法名共享为字符串

时间:2023-04-10 22:18:44 C#

类名和方法名?例如:给定System.Environment和GetFolderPath,我想使用反射来调用Environment.GetFolderPath()。只是Type.GetType(typeName).GetMethod(methodName).Invoke(null,arguments);其中typeName是字符串形式的类型名称,methodName是字符串形式的方法名称,arguments是包含调用方法数组的参数的对象。首先,您需要获取类型(通过使用反射迭代程序集)有关详细信息,请参阅此链接:http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx或使用程序集。GetType获得类型后,您可以使用反射或迭代成员MethodInfomethod=typeof(MyClass).GetMethod("MyMethod");然后您可以使用MethodInfo.Invoke调用该方法,并在您要调用它时传递参数。System.Reflection.Assembly信息=typeof(System.Environment).Assembly;输入t=info.GetType("System.Environment");MethodInfom=t.GetMethod("GetFolderPath");objectresult=m.Invoke(null,参数);您在这里所做的是反映一个名为Environment的类型,并使用GetPropery和GetGetMethod方法获取Environment.CurrentDirectory属性的get方法,如下所示;vargetMethod=typeof(Environment).GetProperty("CurentDirectory",BindingFlags.Public|BindingFlags.Static).GetGetMethod();varcurrentDirectory=(string)getMethod.Invoke(null,null);调用属性的get方法将返回它的值,等同于;varvalue=Environment.CurrentDirectory;以下是您将要执行的操作的基本概述:扫描当前AppDomain中的所有对象-找到一个与您知道的类名匹配的对象获取一个静态方法,该方法具有您知道的该对象的名称动态调用它。编辑:如果您不知道静态类的名称空间,这将起作用。否则,DanielBrückner的解决方案更简单。以上就是C#学习教程:调用静态类的方法,将其类型名和方法名共享为字符串。如果对大家有用,需要进一步了解C#学习教程,希望大家多加关注——本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:

最新推荐
猜你喜欢