使用反射的四种方法

本文详细介绍了.NET反射的四种使用方法,包括直接使用InvokeMember、绑定属性以提高性能、通过委托访问成员以及利用dynamic进行动态访问。反射允许在运行时访问和调用类的未知信息,虽然性能消耗较大,但在某些场景下非常实用。文章通过实例展示了如何构造对象、访问私有成员以及如何优化性能。
摘要由CSDN通过智能技术生成

反射是.net提供的用来访问类或者类里面的内容的一项技术,它允许你在编译时对一个类基本上一无所知的情况下对一个类进行访问,支持利用一个字符串对类进行发现、访问、调用等,以下利用实例介绍四种使用反射的方法

首先祭出一个类,用于模拟被调用的类

public class TestClass 
    {
        private string testType;

        public string TestType
        {
            get { return testType; }
            set { testType = value; }
        }
        private string testType2;
        public string TestType2
        {
            get { return testType2; }
            set { testType2 = value; }
        }
        public TestClass()
        {
            testType2 = "test";
        }
        public int test1()
        {
            int i = 1;
            i++;
            return i;
        }
        public void testsomething()
        {
            int i = 0;
        }
    }
以上代码仅供测试,一般情况下估计没人会写出这样的代码,莫要鄙视,为了模拟反射的调用,我把这个类封装在一个叫testlibrary.dll的类库里面。

接着先把这四种方法的代码列出来先,之后注意解释

        delegate void delegatetest(Type t);

        private const BindingFlags flags = BindingFlags.DeclaredOnly | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance;
//方法1
        private void TestInvoke1(Type t)
        {
            object obj = t.InvokeMember(null, flags | BindingFlags.CreateInstance, null, null, null);
            Console.WriteLine(obj.GetType().ToString());
            string testresult=
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值