- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
yts-C#反射
C#反射
反射是什么
反射是一种机制,通过这种机制我们可以知道一个未知类型的类型信息.比如,有一个对象a,这个对象不是我们定义的,也许是通过网络捕捉到的,也许是使用泛型定义的,但我们想知道这个对象的类型信息,想知道这个对象有哪些方法或者属性什么的.甚至我们想进一步调用这个对象的方法.关键是现在我们只知道它是一个对象,不知道它的类型,自然不会知道它有哪些方法等信息.这时我们该怎么办?反射机制就是解决这么一个问题的.通过反射机制我们可以知道未知类型对象的类型信息.
再比如,我们有一个dll文件,我们想调用里面的类.现在假设这个dll文件的类的定义,数量等不是固定的,是经常变化的.也许某一天你要在这个dll里面增加一个类定义.也许你觉得这没什么问题,现在关键是我们在另一个程序集里面要调用这个dll,这是我们的程序必须能够适应这个dll的变化,也就是说即使改变了dll文件的定义也不需要改变我们的程序集.这时候我们就会使用一个未知dll.我们该怎么办?同样,反射机制帮助了我们,我们可以通过反射来实现.
说白了,反射就是能知道我们未知类型的类型信息这么一个东西.没什么神秘可讲!
反射是一种晚绑定,它可以被开发者用来设计出更具灵活性的代码,而代价则是花费更多的系统资源开销使得应用程序可以在运行时获取一些未知信息。
说白了,在编写代码的时候,开发者可能还不知道或不能确定一些对象的信息,于是把决定权交给代码本身,将来在需要的时候由代码自己去获取和判断这些信息并作出相应的反应。这样的方式固然可以使代码更加灵活,但在想要使用反射的时候,必须先考虑好在性能与灵活之间的一个权衡,不能盲目地因为C#提供了反射机制就一个劲儿地用,我们应该发扬John Carmack“榨干PC机3D图像性能”的精神,而不要因为硬件越来越便宜就让机器背负沉重的包袱去做一些意义不大的事情。
反射的用途:
(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了解参数的名称、数据类型、是输入参数还是输出参数,以及参数在方法签名中的位置等。
反射用到的命名空间:
System.Reflection
System.Type
System.Reflection.Assembly
反射用到的主要类:
System.Type 类--通过这个类可以访问任何给定数据类型的信息。
System.Reflection.Assembly类--它可以用于访问给定程序集的信息,或者把这个程序集加载到程序中。
System.Type类:
System.Type 类对于反射起着核心的作用。但它是一个抽象的基类,Type有与每种数据类型对应的派生类,我们使用这个派生类的对象的方法、字段、属性来查找有关该类型的所有信息。
获取给定类型的Type引用有3种常用方式:
●使用 C# typeof 运算符。
Type t = typeof(string);
●使用对象GetType()方法。
string s = grayworm;
Type t = s.GetType();
●还可以调用Type类的静态方法GetType()。
Type t = Type.GetType(System.String);
上面这三类代码都是获取string类型的Type,在取出string类型的Type引用t后,我们就可以通过t来探测string类型的结构了。
string n
您可能关注的文档
- 区域基本含义和发展阶段.ppt
- 第三章水泵变频调速节能技术.doc
- 疟疾项目健康教育培训会通知.doc
- EDA入门与提高第9章.ppt
- 招商三大定律八项注意.doc
- (普通个人).doc
- 《数据结构》实验四.doc
- 通用液压滤波器(申请号专利号:87208284).pdf
- SEO成功的网站架构.doc
- 《综合知识》模拟试卷3.doc
- (茅台酒)白酒酿造工职业技能认定-制曲制酒考试题及参考答案【综合卷】.docx
- 2025年知识百科竞赛考试题库精编答案.docx
- 2025年知识百科竞赛考试题库含答案【b卷】.docx
- 2025四月份第1章推销概述.pptx
- 2025四月份韵歌教学新趋势:《对韵歌》完美版课件揭秘.pptx
- 2025年知识百科竞赛考试题库附参考答案(能力提升).docx
- 2025四月份项目1创建Docker运行环境.pptx
- 2025年超星尔雅学习通《劳动通论》章节测试题【精练】.docx
- 超星尔雅学习通《形势与政策(2025春)》章节测试卷(网校专用).docx
- 2025年知识百科竞赛考试题库附答案(研优卷).docx
最近下载
- 2023年云南大学滇池学院网络工程专业《数据结构与算法》科目期末试卷A(有答案).docx VIP
- 油水井动态分析方法.pptx VIP
- 风机吊装安全技术交底交底.docx VIP
- 2023年云南大学滇池学院计算机科学与技术专业《数据结构与算法》科目期末试卷B(有答案).docx VIP
- 高考志愿填报样表.doc VIP
- 论剧版《繁花》的叙事策略与主题.docx VIP
- 阳煤丰喜肥业(集团)有限责任公司临猗分公司“8·31”煤气过滤器导淋排液中毒事故调查报告.doc VIP
- 人工智能引论知到智慧树期末考试答案题库2025年浙江大学.docx VIP
- 2023年广东珠海中考地理真题及答案.doc VIP
- 2022年云南大学滇池学院计算机科学与技术专业《数据结构与算法》科目期末试卷A(有答案).docx VIP
文档评论(0)