首页 新闻 会员 周边

C# 反射机制

0
悬赏园豆:50 [已解决问题] 解决于 2016-03-09 19:46

关于反射,除了效率问题,还有什么其他的弊端,请举例说明。谢谢。

_Vegetables的主页 _Vegetables | 小虾三级 | 园豆:586
提问于:2016-03-09 10:14
< >
分享
最佳答案
0

这东西没弊端,用法不当才是问题,慢不是问题,一般用反射的地方都会考虑缓存,甚至用表达式树或者il直接编译委托来做。

代码可读性也不会降低,一般这种反射操作都会根据需求做实际封装,可读性不见得就比正常调用差。

维护难度就看是从哪个角度看了,反射大部分时候使用就是为了灵活,从这点出发可维护度实际是提高了。

如果去直接拿去别人private的信息,这个就属于自找没趣了。

最后你也应该听过小马过河的故事,你如果自己不去尝试光问别人你也只能得到他人的主观意见。但不管如何学习反射会让你更清楚框架的设计。

 

收获园豆:15
Daniel Cai | 专家六级 |园豆:10424 | 2016-03-09 11:48
其他回答(5)
1

1,影响性能

2,降低代码可读性

3,提高代码维护难度

4,个人感觉,反射能够拿到private访问权限的字段属性,破坏了面向对象的封装性

收获园豆:10
coding烫烫烫烫烫 | 园豆:222 (菜鸟二级) | 2016-03-09 10:23
1

存在编译通过,运行时出错的问题,如果用的地方多了,不好排错

收获园豆:10
刘宏玺 | 园豆:14020 (专家六级) | 2016-03-09 10:32
1

反射是为了解决不用反射就没办法解决的问题,你不需要用反射就别用好了。

需要用反射的场景,速度根本不是问题,或者说根本不需要考虑速度,慢就慢好了,浪费都浪费好几分钟,大爷不差那200毫秒。

有问题的是程序员,瞎用。

 

收获园豆:15
爱编程的大叔 | 园豆:30839 (高人七级) | 2016-03-09 14:09
0

一些好的设计模式或多或少都会用到反射,反射对某种程度的自动化相当有用

但是反射是“弱类型”的,错误的话只能在运行时而不能在编译时发现,而且透过反射去访问的速度会比较慢,大量的反射也会相当不好维护

 

LeoLaw | 园豆:226 (菜鸟二级) | 2016-03-11 23:58
0

不用反射

SalesOrder  object;

object.OrderNo="20160312"

 

PurchaseOrder object;

object.OrderNo="20160312"

 

如果用反射

Object object  ;//PurchaseOrder or  SalesOrder  .etc

ReflectionHelper.SetPropertyValue(object ,"OrderNo","20160312")

比较一下,反射的可读性比较好,代码通用性高。

信息化建设 | 园豆:223 (菜鸟二级) | 2016-03-12 10:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册