使用 Visual Studio 显式实现 n 接口

Implementing n interface explicitly using Visual Studio

我在使用 Visual Studio 显式实现 n 接口时遇到了这个问题。所以接口包含属性,但是当我在抽象 class 中显式实现 属性 时,编译器会抛出错误 "The modifier 'public' is not valid for this item".

参考下面给出的代码。

interface ITest
{
    bool MyProperty { get; set; }
}

internal class Test : ITest
{
    public bool ITest.MyProperty
    {
        get
        {
            return false;
        }    

        set { }
    }
}

根据 programming guide,显式接口实现总是缺少访问修饰符。您应该删除 public 关键字。

如果你仔细想想,这很有道理。显式接口实现只有一种可能的访问修饰符 - 用于接口的相同修饰符。因此,您无需指定修饰符。

如果接口被标记为public,而显式实现是private,那将没有意义。编写显式实现的唯一原因是将该成员仅暴露给该接口。如果成员比接口更难访问,那会很奇怪,对吧?

另一方面,如果接口是internal,而成员被标记为public,也没有意义。如果成员比接口更容易访问,那么它不会只暴露给接口。