创建类对象的代码看起来如何:
string myClass = "MyClass";
上面的类型,然后调用
string myMethod = "MyMethod";
在那个物体上?
- Use Type.GetType(string) http://msdn.microsoft.com/en-us/library/system.type.gettype.aspx获取类型对象。
- Use Activator.CreateInstance(Type) http://msdn.microsoft.com/en-us/library/system.activator.createinstance.aspx创建一个实例。
- Use Type.GetMethod(string) http://msdn.microsoft.com/en-us/library/system.type.getmethod.aspx检索方法。
- Use MethodBase.Invoke(object, object[]) http://msdn.microsoft.com/en-us/library/system.reflection.methodbase.invoke.aspx调用对象的方法
示例,但没有错误检查:
using System;
using System.Reflection;
namespace Foo
{
class Test
{
static void Main()
{
Type type = Type.GetType("Foo.MyClass");
object instance = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod("MyMethod");
method.Invoke(instance, null);
}
}
class MyClass
{
public void MyMethod()
{
Console.WriteLine("In MyClass.MyMethod");
}
}
}
每个步骤都需要仔细检查 - 您可能找不到类型,它可能没有无参数构造函数,您可能找不到该方法,您可能使用错误的参数类型调用它。
需要注意的一件事:Type.GetType(string) 需要类型的程序集限定名称,除非它位于当前执行的程序集或 mscorlib 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)