黑马程序员技术交流社区

标题: C#中的反射 [打印本页]

作者: liucaifu    时间: 2011-11-7 12:59
标题: C#中的反射
C#中的反射是什么意思,主要有什么作用,在开发过程中有什么作用。
作者: 陈涛    时间: 2011-11-7 13:50
程序集包含模块,而模块包含类型,类型又包含成员.反射则听歌了封装程序集,模块和类型的对象.可以使用反射动态的创建类型的实例.将类型绑定到现有对象,或从现有对象中获取类型.然而可以调用类型的方法或访问其字段和属性.
作者: 黄威    时间: 2011-11-7 15:44
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等。有了反射,即可对每一个类型了如指掌。如果获得了构造函数的信息,即可直接创建对象,即使这个对象的类型在编译时还不知道。
反射的用途:
    (1)使用Assembly定义和加载程序集,加载在程序集清单中列出模块,以及从此程序集中查找类型并创建该类型的实例。
    (2)使用Module了解包含模块的程序集以及模块中的类等,还可以获取在模块上定义的所有全局方法或其他特定的非全局方法。
    (3)使用ConstructorInfo了解构造函数的名称、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。
    (4)使用MethodInfo了解方法的名称、返回类型、参数、访问修饰符(如pulic 或private)和实现详细信息(如abstract或virtual)等。
    (5)使用FiedInfo了解字段的名称、访问修饰符(如public或private)和实现详细信息(如static)等,并获取或设置字段值。
    (6)使用EventInfo了解事件的名称、事件处理程序数据类型、自定义属性、声明类型和反射类型等,添加或移除事件处理程序。
    (7)使用PropertyInfo了解属性的名称、数据类型、声明类型、反射类型和只读或可写状态等,获取或设置属性值。
    (8)使用ParameterInfo了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等。
作者: 宋天琪    时间: 2011-11-7 17:04
作用黄威说的很好,我举个例子吧。
作者: 宋天琪    时间: 2011-11-7 17:05
比如你建立了admin公共类文件,里面有proc1函数,Assembly 可以让你再输入admin.的时候,自动提示函数名proc1,这是net的内部运行机制,你只要使用就可以了。
作者: 何旭    时间: 2011-12-12 11:49
可以参看我的博客:(反射的简单理解)http://www.cnblogs.com/cilence/archive/2011/12/12/2284623.html
作者: 王立磊    时间: 2011-12-12 14:27
在工厂模式中用到的特别多用于取出xml里面的类型!!更加方便易于扩展和维护,可以去看下典型的工厂模式,通过实例了解就可以了!!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2