使用Visual Studio显式实现n接口

时间:2017-03-25 11:10:27

标签: c# properties interface explicit

当我使用Visual Studio显式实现n接口时,我遇到了这个问题。因此接口包含属性,但是当我在抽象类中显式实现该属性时,Compiler会抛出错误“修饰符'public'对此项无效”。

参考下面给出的代码。

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

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

        set { }
    }
}

1 个答案:

答案 0 :(得分:0)

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

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

如果界面标记为public,并且显式实现为private,则无效。编写显式实现的唯一原因是将该成员公开给该接口。如果成员的界面不如界面那么可能会很奇怪,对吗?

另一方面,如果界面为internal且成员标记为public,则它也没有意义。如果该成员比界面更易于访问,则它不会仅暴露给界面。