我使用接口(interface)来解耦代码。我很好奇,使用显式接口(interface)实现是为了隐藏功能吗?

例子:

public class MyClass : IInterface
{
     void IInterface.NoneWillCall(int ragh) { }
}

通过接口(interface)仅显式提供此功能的好处和特定用例是什么?

最佳答案

根据我的经验,它有两个主要用途:

  • 它允许您按返回值重载方法。例如,IEnumerable<T>IEnumerable都声明了GetEnumerator()方法,但是具有不同的返回类型-因此要实现这两种方法,必须显式实现其中至少一种。当然,在这个问题中,这两种方法都是由接口(interface)提供的,但是有时您只想提供一种与接口(interface)方法不同类型(通常是更具体的一种)的“常规”方法。
  • 它允许您以“区分式”方式实现接口(interface)的一部分-例如,ReadOnlyCollection<T>实现IList<T>,但使用显式接口(interface)实现“阻止”变异调用。这将阻止通过具体类型知道对象的调用者调用不适当的方法。这有点让人觉得接口(interface)太宽泛或​​实现不当-如果无法履行其所有契约(Contract),为什么还要实现一个接口(interface)呢? -但从务实的角度讲,它可能是有用的。
  • 关于c# - 使用显式接口(interface)实现是否意味着要隐藏功能?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6129857/

    10-11 06:27
    查看更多