C#如何通过反射获取方法以及动态调用方法
作者:互联网
假设我们现在有下面这个类TestClass
namespace TestSpace
{
public class TestClass
{
private string _value;
public TestClass() { }
public TestClass(string value)
{
_value = value;
}
public string GetValue(string prefix)
{
if (null == _value)
return "null";
else
return prefix + ": " + _value;
}
public string Value
{
set { _value = value; }
get
{
if (null == _value) return "null";
else return _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);
标签:调用,string,C#,object,TestClass,value,null,方法,public 来源: https://blog.csdn.net/qq_41973169/article/details/120371283