拿这个例子来说:
public interface IFoo
{
IFoo Bar();
}
public class Foo : IFoo
{
public Foo Bar()
{
//...
}
IFoo IFoo.Bar() { return Bar(); } //Why is this necessary?
}
为什么即使 Foo
可以不需要强制转换就能转换为 IFoo
,IFoo Bar()
的隐式实现还是必要的?
Foo
的用户绑定到具体实现,使得单元测试中的模拟变得困难,并且通常会增加应用程序的耦合度... - Steve CzettyFoo
具体版本(而不是IFoo
)的类都将与该特定实现耦合。 - Steve Czetty