【发布时间】:2012-12-07 06:00:00
【问题描述】:
举个例子:
public interface IFoo
{
IFoo Bar();
}
public class Foo : IFoo
{
public Foo Bar()
{
//...
}
IFoo IFoo.Bar() { return Bar(); } //Why is this necessary?
}
为什么 IFoo Bar() 的隐式实现是必要的,即使 Foo 在没有强制转换的情况下转换为 IFoo?
【问题讨论】:
-
你为什么要这样做?您有效地将
Foo的用户与具体实现联系在一起,使单元测试的模拟变得困难,并且通常会增加应用程序中的耦合... -
这两种方法几乎是互斥的。两者都有效,但目的不同。你不会在同一个具体类中对同一个接口使用这两种方法(至少不是我能想到的)
-
@SteveCzetty 因此是 OP 的问题;需要显式实现接口的地方。
-
@AaronMcIver 我的意思是,任何引用
Foo(而不是IFoo)具体版本的类都将与该特定实现耦合。
标签: c# .net interface explicit-implementation