2010-06-24 84 views
1

我一直在.NET 4.0中学习DynamicObject,并想知道这种类型是否适合创建模拟对象。DynamicObject:这是一个很好的解决方案吗?

嘲笑似乎是一个很好的方式来使用DynamicObject,但我错过了什么?

  • 是否有任何嘲笑框架使用DynamicObject(而不是动态代理或拦截)嘲笑?
  • 使用DyanmicObject进行模拟(除了需要.NET 4.0 CLR)还有什么缺点吗?

回答

2

我能想到的最大缺点是你可以在动态类型上直接调用世界上任何方法/属性。

例如,如果你的api改变了 - 你测试的代码仍然会全部编译,但是如果它们试图运行重命名/删除的方法,它们将全部死于运行时错误。

这与在动态对象上操作时丢失所有Intellisense的事实相结合,导致我相信基于动态的模拟库将更难以使用像Rhino这样基于代理的模型。

+0

伟大的一点。我没有想到:-)很久以前,我从NMock转向Rhino Mocks的最大原因之一是它支持编译时类型检查。 – dariom 2010-06-25 07:03:15

相关问题