c# – 使用自动属性显式实现接口

有没有办法使用自动属性显式地实现一个接口?例如,考虑这个代码:

namespace AutoProperties
{
    interface IMyInterface
    {
        bool MyBoolOnlyGet { get; }
    }

    class MyClass : IMyInterface
    {
        static void Main(){}

        public bool MyBoolOnlyGet { get; private set; } // line 1
        //bool IMyInterface.MyBoolOnlyGet { get; private set; } // line 2
    }
}

这段代码编译.但是,如果将行1替换为第2行,则不会编译.

(这不是我需要让第2行工作 – 我只是好奇.)

最佳答案
实际上,该语言不支持该特定安排(通过自动实现的属性显式实现get-only接口属性).所以要么手动(用一个字段),或者写一个私有的自动实现的prop,并代理它.但老实说,当你做完这个时候,你也可以使用一个领域…

private bool MyBool { get;set;}
bool IMyInterface.MyBoolOnlyGet { get {return MyBool;} }

要么:

private bool myBool;
bool IMyInterface.MyBoolOnlyGet { get {return myBool;} }

转载注明原文:c# – 使用自动属性显式实现接口 - 代码日志