知识需要不断积累、总结和沉淀,思考和写作是成长的催化剂
内容目录
一、概述
反射其实无处不在
,我们用VS进行调试时候,查看成员列表、修改变量值都是通过反射来实现的。我们写业务代码可能很少去写反射,但理解反射是从菜鸟到大牛的必经之路
。无论EF还是ASP.NET,几乎所有框架都用到反射。反射动态创建对象、动态赋值、动态调用方法
。
前面简单介绍过.NET的第一次编译,会编译成IL(中间语言),反射就是利用IL在运行时获取类的各种信息
(字段、方法、构造函数等),并且可以动态的创建对象调用方法。反射就是通过使用metadata的过程
。
每一个类对应有一个Type对象
,方法对应一个MethodInfo对象,属性对应一个PropertyInfo,这些都是一个类的元数据(MetaData)保存在IL中,所以解析IL可以获取一个类的各种信息。
特性就和反射绑定的,没有反射,特性就无从使用。特性本质就是给类、方法等元素添加一些额外的信息和行为
。特性添加编译后也产生IL&#