关于反射,除了效率问题,还有什么其他的弊端,请举例说明。谢谢。
这东西没弊端,用法不当才是问题,慢不是问题,一般用反射的地方都会考虑缓存,甚至用表达式树或者il直接编译委托来做。
代码可读性也不会降低,一般这种反射操作都会根据需求做实际封装,可读性不见得就比正常调用差。
维护难度就看是从哪个角度看了,反射大部分时候使用就是为了灵活,从这点出发可维护度实际是提高了。
如果去直接拿去别人private的信息,这个就属于自找没趣了。
最后你也应该听过小马过河的故事,你如果自己不去尝试光问别人你也只能得到他人的主观意见。但不管如何学习反射会让你更清楚框架的设计。
1,影响性能
2,降低代码可读性
3,提高代码维护难度
4,个人感觉,反射能够拿到private访问权限的字段属性,破坏了面向对象的封装性
存在编译通过,运行时出错的问题,如果用的地方多了,不好排错
反射是为了解决不用反射就没办法解决的问题,你不需要用反射就别用好了。
需要用反射的场景,速度根本不是问题,或者说根本不需要考虑速度,慢就慢好了,浪费都浪费好几分钟,大爷不差那200毫秒。
有问题的是程序员,瞎用。
一些好的设计模式或多或少都会用到反射,反射对某种程度的自动化相当有用
但是反射是“弱类型”的,错误的话只能在运行时而不能在编译时发现,而且透过反射去访问的速度会比较慢,大量的反射也会相当不好维护
不用反射
SalesOrder object;
object.OrderNo="20160312"
PurchaseOrder object;
object.OrderNo="20160312"
如果用反射
Object object ;//PurchaseOrder or SalesOrder .etc
ReflectionHelper.SetPropertyValue(object ,"OrderNo","20160312")
比较一下,反射的可读性比较好,代码通用性高。