日期:2014-05-17  浏览次数:20830 次

哪种方法好一些,使用接口和dynamic
某个类A,含有方法B,通过反射得出A的实例a:
1、A中的B方法实现接口IB
(a as IB).B();
2、使用dynamic
dynamic d = a;
d.B();

------解决方案--------------------
能使用接口当然更好些(所有那些强类型的好处)。
------解决方案--------------------
http://www.cnblogs.com/luminji/archive/2011/02/18/1957484.html
------解决方案--------------------
引用:
某些类A1、A2、A3....,都含有方法B,当然实现不一样,通过反射得出其中一个类的实例a:
1、这些类中的B方法实现接口IB
(a as IB).B();
2、使用dynamic
dynamic d = a;
d.B();
哪个写法好一些?

使用接口更好:
可以智能提示,减少出错的可能性,效率上接口也要优于动态类型。

------解决方案--------------------
如果用了接口就无需手动反射。如果没用接口就自然需要反射,dynamic则属于不得已为之手段,除非你自己明确知道结果否则轻易不要用dynamic

当然我个人认为你的前提本身就有的设计上的省略过程。如果已经知道接口或固定方法,其实手段多的很,桥接,适配,MEF自动配置,IOC依赖配置文件配置,接口工厂,方法工厂都是可能的手段。手动反射只是一个最原始的样子