A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liucaifu 黑马帝   /  2011-11-7 12:59  /  3535 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

C#中的反射是什么意思,主要有什么作用,在开发过程中有什么作用。

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

6 个回复

正序浏览
王立磊 黑马帝 2011-12-12 14:27:47
7#
在工厂模式中用到的特别多用于取出xml里面的类型!!更加方便易于扩展和维护,可以去看下典型的工厂模式,通过实例了解就可以了!!

评分

参与人数 1技术分 +2 收起 理由
李荣壮 + 2

查看全部评分

回复 使用道具 举报
何旭 黑马帝 2011-12-12 11:49:02
地板
可以参看我的博客:(反射的简单理解)http://www.cnblogs.com/cilence/archive/2011/12/12/2284623.html

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
比如你建立了admin公共类文件,里面有proc1函数,Assembly 可以让你再输入admin.的时候,自动提示函数名proc1,这是net的内部运行机制,你只要使用就可以了。

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
作用黄威说的很好,我举个例子吧。
回复 使用道具 举报
反射(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了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等。

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

回复 使用道具 举报
程序集包含模块,而模块包含类型,类型又包含成员.反射则听歌了封装程序集,模块和类型的对象.可以使用反射动态的创建类型的实例.将类型绑定到现有对象,或从现有对象中获取类型.然而可以调用类型的方法或访问其字段和属性.

评分

参与人数 1技术分 +1 收起 理由
李荣壮 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马