Net Core教程

C#如何通过反射获取方法以及动态调用方法

本文主要是介绍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);

这篇关于C#如何通过反射获取方法以及动态调用方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!