dynamic不应滥用:dynamic应用原则探讨

4.0的经典就是动态语言特性,其中体现在C#4.0上就是dynamic。

看到网上的一些观点和例子,我不禁困惑:dynamic和反射如何区分使用?

很多人热捧dynamic,似乎有取代反射之用。其实在我看来,“反射+接口”依然是程序扩展的主体思路,因为接口的约束使得程序体系是健康的。如果滥用dynamic,将造成程序结构混乱的情况。要知道,当年面向对象语言超越面向过程语言的原因之一就是:规矩(派生与继承)!

从我目前的编程经历看来,有一个情况dynamic可以有着巨大的贡献。记得当初写一个系统,其中一些类有着同名方法实现相同功能,但却不是派生自同一接口。原因很简单,因为接口的方法不是每个类都需要实现。以前为了实现调用同一函数的形式,不得不派生自接口,对于不需要实现的接口方法只能置空——显然这是很不合理的,也是无奈的办法。

但是,有了dynamic,局势就不一样了,虽然这些类不是派生自同一接口,但依然可以使用同一方法的形式。有空贴个简单的例子说明。

你可能感兴趣的:(编程,C#,扩展,语言)