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);

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页