我有一组所谓的流畅接口,所以我可以使用这样的语法:
。a.With( “ABC”)执行( “这”)则(“即);
每个方法都返回一个对象转换为相应的接口。在设计时,我可以使用Intellisense轻松地在API方法之间导航。但是,如果我将其中一个参数转换为动态,我就不能再这样做了:
a.With((动态) “ABC”)执行( “这”)则(“即);
不仅我在设计时失去了Intellisense,这个强制转换会影响运行时执行:所有后续调用返回动态类型的返回对象可能会破坏执行逻辑。
我无法理解为什么动态参数会影响仅使用静态类型的契约。如果方法With被设计为返回ISomeInterface的实例并且实现返回SomeClass(实现ISomeInterface),为什么在不相关的地方使用的动态对象会感染所有后续的调用链?有什么办法可以阻止吗?
答案 0 :(得分:0)
我相信Erik Lippert的这篇文章全部回答:
http://blogs.msdn.com/b/ericlippert/archive/2012/10/22/a-method-group-of-one.aspx