把问题抛给用户之徒增复杂度的SilverLight依赖属性与附加属性
对于SilverLight为什么引入依赖属性与附加属性,官方的说法是减少内存消耗,提高性能。而在我看来这只是掩盖自己懒惰或无能的一个借口。首先我们看一下微软面对的问题,就WPF来说,内存消耗不能太大,性能也不能比Winform还低,就Silverlight来说,受限于网络带宽,还有运行时控件不能太大,XAP文件也不能太大这些限制。这些问题都是微软应该在框架内部解决的问题,你不能把责任甩给用户-开发人员,依赖属性与附加属性就是微软甩给我们的猴子。
Lamda表达式都能让编译器搞定,区区一个依赖属性和附加属性,增加一个Attribute,让编译器去干岂不是更好?更进一步,检查所有代码对这个属性的使用情况,自动决定编译成依赖属性还是普通属性就更好了,再最后,通过编译器的优化参数一步到位,干脆这两个概念在.net开发中就没存在的必要。
WPF和Silverlight的性能最后是通过使用DirectX和硬件加速解决的,内存消耗大的问题至今仍存,估计是在内存动辄几个G的情况下,微软把解决内存问题的优先级放在了性能之后。但由此也可看到所谓依赖属性与附加属性既没解决性能问题也没解决内存问题,终归是个治标不治本的东西。
我怀疑是不是SIlverlight和WPF开发组没争取到.Net核心组老大的支持,自己又没法修改编译器、运行时这些核心的东西,最后没办法才搞出了这个依赖属性折中方案。到现在呢,船大难掉头,只好走下去了。哈哈