C#反射的作用

问:我看了些反射的资料有些不懂 反射是动态获取程序集中的对象 属性 方法 然后去调用 但是如果有了程序集 为什么不直接调用 而是用发射去调用呢

我觉得下面这个回答让我似乎懂了点!?
答:
反射不需要引用
只要知道你的dll所在的位置,dll文件的名称,内部的方法名
就可以GetMethod来获取方法 就可以直接拿来用

和引用差不多,楼主的意思是,我既然可以引用进来直接使用,为什么还要用反射这种执行效率底下的方法是不是?

引用执行效率是高,但是你dll文件很多呢?就像电视台:中央一套.dll,中央二套.dll.....上百个dll文件
你都要添加一次? 
当这个页面用到那份dll的概率比较小并且dll文件是动态的,这时候 你可以用变量存储dll文件的名称
来动态反射,避免多余的添加引用,这样方便 也比较合理,万一浙江又多开了几个电视台,你也不用就改程序了
反正是动态的 管他新建电视台还是删除电视台,我只反射传进来的dll文件名

答2:个别通用组件可以将反射代码深深地封装起来,让一般程序员触碰不到。同时,这种组件通常都会用在很重要的环节中,所以应该经过千锤百炼、成千上万次地自动化测试。

绝不是说鼓励一般程序员去玩反射。一旦玩这个,你往往就失去了调试能力,调试时就找不着北了(找不到程序调用堆栈的脉络了),谈不上“大大提高开发效率”。

基本上,首先我们从需求出发,创造一种效果。特别是内容可以重构而行为接口完全不变的那些东西,往往对用户有震撼力。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值