namespace TestSpace { public class TestClass { private string _value; public TestClass() { } public TestClass(string value) { _value = value; } public string GetValue( string prefix ) { if( _value==null ) return "NULL"; else return prefix+" : "+_value; } public string Value { set { _value=value; } get { if( _value==null ) return "NULL"; else return _value; } } } }
上面是一个简单的类,包含一个有参数的构造器,一个GetValue的方法,一个Value属性,我们可以通过方法的名称来得到方法并且调用之,如:
//获取类型信息
Type
t = Type.GetType("TestSpace.TestClass");
//构造器的参数
object[]
constuctParms = new
object[]{"timmy"};
//根据类型创建对象
object dObj
= Activator.CreateInstance(t,constuctParms);
//获取方法的信息
MethodInfo method
= t.GetMethod("GetValue");
//调用方法的一些标志位,这里的含义是Public并且是实例方法,这也是默认的值
BindingFlags
flag = BindingFlags.Public |
BindingFlags.Instance;
//GetValue方法的参数
object[]
parameters = new
object[]{"Hello"};
//调用方法,用一个object接收返回值
object
returnValue =
method.Invoke(dObj,flag,Type.DefaultBinder,parameters,null);
属性与方法的调用大同小异,大家也可以参考MSDN
如何使用反射创建类实例,并调用方法.,布布扣,bubuko.com
原文:http://www.cnblogs.com/malc1988/p/3570367.html