我使用接口(interface)来解耦代码。我很好奇,使用显式接口(interface)实现是为了隐藏功能吗?
例子:
public class MyClass : IInterface
{
void IInterface.NoneWillCall(int ragh) { }
}
通过接口(interface)仅显式提供此功能的好处和特定用例是什么?
最佳答案
根据我的经验,它有两个主要用途:
IEnumerable<T>
和IEnumerable
都声明了GetEnumerator()
方法,但是具有不同的返回类型-因此要实现这两种方法,必须显式实现其中至少一种。当然,在这个问题中,这两种方法都是由接口(interface)提供的,但是有时您只想提供一种与接口(interface)方法不同类型(通常是更具体的一种)的“常规”方法。 ReadOnlyCollection<T>
实现IList<T>
,但使用显式接口(interface)实现“阻止”变异调用。这将阻止通过具体类型知道对象的调用者调用不适当的方法。这有点让人觉得接口(interface)太宽泛或实现不当-如果无法履行其所有契约(Contract),为什么还要实现一个接口(interface)呢? -但从务实的角度讲,它可能是有用的。 关于c# - 使用显式接口(interface)实现是否意味着要隐藏功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6129857/