转载请注明出处!
什么是反射?
反射是一个程序集发现及运行的过程,通过反射可以得到*.exe或*.dll等程序集内部的信息。使用反射可以看到一个程序集内部的接口、类、方法、字段、属性、特性等等信息。
什么是Assembly(程序集)?
Assembly是一个包含来程序的名称,版本号,自我描述,文件关联关系和文件位置等信息的一个集合。在.net框架中通过Assembly类来支持,该类位于System.Reflection下,物理位置位于:mscorlib.dll。
Assembly能干什么?
通过Assembly可以动态加载程序集,并查看程序集的内部信息,其中最常用的就是Load()这个方法。
Assembly assembly=Assembly.Load("MyAssembly");
利用Assembly的object CreateInstance(string) 方法可以反射创建一个对象,参数0为类名。?
其他常用的类:?
Assembly 通过此类可以加载操纵一个程序集,并获取程序集内部信息
EventInfo 该类保存给定的事件信息
FieldInfo 该类保存给定的字段信息
MethodInfo 该类保存给定的方法信息
MemberInfo 该类是一个基类,它定义了EventInfo、FieldInfo、MethodInfo、PropertyInfo的多个公用行为
Module 该类可以使你能访问多个程序集中的给定模块
ParameterInfo 该类保存给定的参数信息
PropertyInfo 该类保存给定的属性信息??
一、首先举例说明一下Assembly的简单应用?
查看类的程序集信息?:
二、相关反射机制
运行结果:
2、使用Assembly加载项目程序集和确定的类
5、通过FieldInfo查找字段,获取字段值和设置字段值(与PropertyInfo类似)
运行结果:
7、注意,程序集中获取内部的接口、类、方法、字段、属性、特性等信息时,只能获取public声明的信息。
扩展:
可以将项目的程序集信息封装到dll文件中,然后通过引用dll文件,利用反射机制来获取封装的程序集?信息。具体操作大家可以看一下我的上一篇博文:
http://iq007.blog.163.com/blog/static/26554201920168115940866/
小弟也是刚入门C#不久,把学习内容分享给大家,若有不对,望大家指正……最后祝大家学习愉快……嘿嘿?