代码看起来如何创建类的对象:
string myClass = "MyClass";
以上类型,然后调用
string myMethod = "MyMethod";
那个对象?
使用Type.GetType(string)
来获取类型的对象.
使用Activator.CreateInstance(Type)
创建一个实例.
使用Type.GetMethod(string)
检索的方法.
用于MethodBase.Invoke(object, object[])
在对象上调用方法
示例,但没有错误检查:
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中.