电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

c 中如何理解 反射技术

5页
  • 卖家[上传人]:小**
  • 文档编号:89122898
  • 上传时间:2019-05-18
  • 文档格式:DOC
  • 文档大小:17.50KB
  • / 5 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、C 中如何理解反射技术在搜索c#中反射技术时看到这样一篇文章,写的很有意思,下面是全文你首先要理解一下概念:一类型(Type)对象是什么比如objectx;x是对象,object就是它的类型,在程序中如何描述类型这个概念呢?就是Type(System.Type)。要获取某个类的类型可以用typeof()操作符objecta;objectb;DataTablet;aType=typeof(object);TypebType=typeof(object);tType=typeof(DataTable);aType=bType!=tType;二程序集(Assembly)就是你IDE生成的.exe或.dll文件的运行时就叫程序集。所有的代码都在程序集中。你可以通过Assembly.Load()系列函数动态加载程序集(这一步是动态+载代码的前提,因为所有的代码都在程序集中)。三动态加载我们普通调用代码是:对象名.方法名(参数列表);classavoidfunc(intx)publicstaticvoidMain(stringargs)/创建对象aa1=newa();/调用函数a1.func(1)

      2、;用反射动态调用代码是/加载程序集System.Reflection.Assemblyasm=Assembly.LoadFile(assemblyPath);/获取类型TypeaType=asm.GetType(名字空间.类名);/获取没有参数的构造函数System.Reflection.ConstructorInfoconn=t.GetConstructor(newType0);/调用没有参数的构造函数,Invoke返回object它其是a类objecta1=conn.Invoke(newobject0);/获取参数类型为int,函数名为func的方法MethodInfomethod=t.GetMethod(func,newTypetypeof(int);/在a1上调用func方法,参数为1method.Invoke(a1,newobject1);动态调用(后一种方法)比静态调用更复杂,而且效率大概低20倍(网上有个哥们好像测试过)。只有在特殊的时候才调用动态加载动态调用-比如,你的主程序启动的时候子模块还没有,要根据登陆信息下载子模块代码并调用子模块代码,就只能用动态+载来实现了.

      3、四元数据.net生成的IL代码中标明了在这个(exe,dll)文件中所有的class(类)method(方法)Attribute(属性)Property(类属性)的签名和调用方法信息,这些信息就叫做元数据。所谓的Reflection反射,就是利用元数据,可以了解到某个assembly(基本等同文件)中的class。(就是上面那一串咚咚)信息和调用方法。五.netframework在.netframework中反射类基本都在System.Reflection中。System.Type是反射的核心类.与它相关的还有System.Attribute命名空间。用生活中的例子来讲解什么是反射以及反射的基本使用方式。我先问大家一个问题:集结号中谷子地穿的南朝鲜军服从哪儿来?显然不是临时找裁缝赶制的,肯定是从俘虏身上扒下来的。好,那我们就来补充一点儿集结号的镜头看看什么是反射。一天傍晚,一名又饥又渴的南朝鲜掉队士兵在乡间小路上蹒跚地走着,他甚至都快扛不动身上的枪了,也不知道队伍在哪里,只好认准一个方向努力寻找。不许动!从路边草丛中跳出的两名埋伏着的中国士兵喝道,这名南朝鲜士兵本来就精疲力尽,哪受得了

      4、这番惊吓,当时就一屁股坐在地上了。中国士兵把他押回营部并向上级报告,他们在附近巡逻的时候意外俘获一名南朝鲜掉队士兵,听候处置。这件事情被上报到王团长那里,王团长正拿着放大镜跟几名军官在地图前研究作战方案,听到这件事,不紧不慢地跟他身边的高连长说道:高诚啊,你去看看,没啥大问题就送到后方战俘营去。是!高连长接到命令便转身出去了。高连长来到一件狭小的房间,那名南朝鲜士兵正半躺在地上,手里拿着中国士兵给他的馒头和水,一口一口地嚼着,看到高连长进来了,眼睛里流露出紧张和恐惧的神情。高连长简单介绍了中国方面善待俘虏的政策,便开始审问他-注意,反射开始了!哪儿的?联合国军李承晚系部队3团2排1班。叫什么名字?思密达。这次执行什么任务?潜入贵军阵地并指引炮兵进行射击。一番软硬兼施之后,高连长掌握了这个小兵所有的信息,整理好材料去跟王团长汇报去了,而这个小兵被带到一个小屋子里继续啃馒头去了,身上的行头也被换了下来,换上了专门为战俘准备的棉衣。高连长一手拿着笔录材料,一手拎着南朝鲜士兵的全套行头去见了王团长,汇报之后王团长会心地笑了:小高啊,不错,你父亲当初把你交给我,我就叫他放心,你是块好料子,怎么样

      5、,我没说错吧,呵呵,不过你也莫要骄傲,我们不能轻敌,这样,你带着这身行头去找谷子地,叫他换上之后连夜潜入敌方阵地,敌人不是想拿炮弹砸我们吗,那我们就用他们的方式,先发制人,让老谷指引我军炮火明日凌晨发起总攻。谷子地换上了这身洋行头,揣了半条烟就出发了,他潜入敌方阵地后冷静地掏出敌人的望远镜进行了周密地观察,并通过无线电给后方友军传递射击参数,成功地引导我军取得了这次重大胜利。上面的故事情节描述得有点儿多了,赶紧来看代码吧,首先,我们得有个倒霉的南朝鲜士兵做引子:1:namespaceUN2:3:internalclassSouthKoreaArmy4:5:publicstringNameget;set;6:7:publicstringSearch(stringdestination)8:9:returnOK,fire!;10:11:12:然后,我们用代码来实现谷子地所完成的行动:1:internalclassChineseArmy2:3:publicstaticvoidAction(objectsoldier)4:5:Typetype=soldier.GetType();6:objectziDiGu=Activator.CreateInstance(type);7:MethodInfomethodInfo=type.GetMethod(Search);8:9:Console.WriteLine(methodInfo.Invoke(ziDiGu,newobjectPosition);10:11:这段代码很好理解,第5行我们审问了被俘的南朝鲜士兵并得到了他提供的信息和服装,然后让老谷用他的服装化装成南朝鲜士兵。第7行,小样,你不是想侦查我吗,好,咱就来个以牙还牙,用你的方式来搞定你!接下来,谷子地潜入地方阵地并引导了我军发起总攻。这里展示了反射的一些基本应用,例如获取类型信息、利用获取的类型动态生成对象,并动态调用其方法。当然,反射机制能做的事情不仅仅是这几样,不过目标都一样,由程序自己去获取信息、做出反应。在不用担心性能开销的情况下,反射可以使你的程序更加灵活强大!完美结合了电影素材与技术原理。

      《c 中如何理解 反射技术》由会员小**分享,可在线阅读,更多相关《c 中如何理解 反射技术》请在金锄头文库上搜索。

      点击阅读更多内容
    最新标签
    信息化课堂中的合作学习结业作业七年级语文 发车时刻表 长途客运 入党志愿书填写模板精品 庆祝建党101周年多体裁诗歌朗诵素材汇编10篇唯一微庆祝 智能家居系统本科论文 心得感悟 雁楠中学 20230513224122 2022 公安主题党日 部编版四年级第三单元综合性学习课件 机关事务中心2022年全面依法治区工作总结及来年工作安排 入党积极分子自我推荐 世界水日ppt 关于构建更高水平的全民健身公共服务体系的意见 空气单元分析 哈里德课件 2022年乡村振兴驻村工作计划 空气教材分析 五年级下册科学教材分析 退役军人事务局季度工作总结 集装箱房合同 2021年财务报表 2022年继续教育公需课 2022年公需课 2022年日历每月一张 名词性从句在写作中的应用 局域网技术与局域网组建 施工网格 薪资体系 运维实施方案 硫酸安全技术 柔韧训练 既有居住建筑节能改造技术规程 建筑工地疫情防控 大型工程技术风险 磷酸二氢钾 2022年小学三年级语文下册教学总结例文 少儿美术-小花 2022年环保倡议书模板六篇 2022年监理辞职报告精选 2022年畅想未来记叙文精品 企业信息化建设与管理课程实验指导书范本 草房子读后感-第1篇 小数乘整数教学PPT课件人教版五年级数学上册 2022年教师个人工作计划范本-工作计划 国学小名士经典诵读电视大赛观后感诵读经典传承美德 医疗质量管理制度 2 2022年小学体育教师学期工作总结
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.