当我定义一个包含只写属性的接口(interface)时:

public interface IModuleScreenData
{
    string Name { set; }
}

并尝试(天真的)明确实现它,以使该属性也具有一个公开可用的getter:
public class ModuleScreen : IModuleScreenData
{
    string IModuleScreenData.Name { get; set; }
}

然后我得到以下错误:



但是,使用以下替代语法后,或多或少会出现该错误:
public class ModuleScreen : IModuleScreenData
{
    public string Name { get; IModuleScreenData.set; }
}

编译失败,我想我真正想做的事情是不可能的。我是对的,还是毕竟有一些 secret 的酱汁语法?

最佳答案

你可以这样做:

public class ModuleScreen : IModuleScreenData
{
    string IModuleScreenData.Name
    {
        set { Name = value; }
    }

    public string Name { get; private set; }
}

附带一提,我通常不建议仅设置属性。一种方法可能更好地表达意图。

关于c# - 是否可以在公开使用getter时显式实现属性 setter ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16551498/

10-12 01:35