Tag: explicit implementation

C#:通过显式指定接口来覆盖属性

在尝试从Collection类覆盖ICollection.IsReadOnly属性的显式接口实现时,我遇到了一些文档,指出显式接口成员实现无法被覆盖,因为它们不能具有virtual或abstract等修饰符。 在MSDN上,他们甚至可以通过创建另一个由显式接口成员实现调用的抽象或虚拟成员来指定如何使显式接口成员实现可用于inheritance。 到目前为止没问题。 但后来我想知道: 为什么C#可以通过显式指定接口来覆盖任何显式实现的接口成员? 例如,假设我有一个这样的简单接口,具有属性和方法: public interface IMyInterface { bool AlwaysFalse { get; } bool IsTrue(bool value); } 还有一个显式实现接口的类A ,并且有一个方法Test() ,它调用自己的接口成员实现。 public class A : IMyInterface { bool IMyInterface.AlwaysFalse { get { return false; } } bool IMyInterface.IsTrue(bool value) { return value; } public bool Test() { return ((IMyInterface)this).AlwaysFalse; } } 如您所见,四个成员中没有一个是虚拟的或抽象的,所以当我像这样定义一个B类时: public class […]

如何在基类上调用显式实现的接口方法

我有一种情况,其中两个类(一个派生自另一个)都明确地实现相同的接口: interface I { int M(); } class A : I { int IM() { return 1; } } class B : A, I { int IM() { return 2; } } 从派生类的IM() ,我想调用基类的实现,但我不知道如何做到这一点。 到目前为止我尝试过的是(在B级): int IM() { return (base as I).M() + 2; } // this gives a compile-time error //error CS0175: Use of […]