我使用接口来解耦我的代码.我很好奇,是否使用显式接口实现隐藏功能?
例:
public class MyClass : IInterface
{
void IInterface.NoneWillCall(int ragh) { }
}
Run Code Online (Sandbox Code Playgroud)
只有通过界面明确提供此功能有什么好处和具体用例?
Jon*_*eet 11
根据我的经验,它有两个主要用途:
IEnumerable<T>
与IEnumerable
这两种申报GetEnumerator()
方式,但返回类型不同-所以要实现这两个,你必须实现明确其中至少有一个.当然在这个问题中,这两个方法都是由接口提供的,但有时你只想给接口方法提供一个不同类型(通常是更具体的一个)的"普通"方法.ReadOnlyCollection<T>
实现IList<T>
,但是"阻止"使用显式接口实现的变异调用.这将阻止通过其具体类型了解对象的调用者调用不适当的方法.这有些界面过于宽泛或者执行不当 - 如果你无法履行所有合同,为什么要实现界面呢? - 但从实用的角度来看,它可能很有用.