是否可以在公开获取getter的同时明确实现属性设置器?

Nik*_*sev 9 c# language-features properties explicit-implementation

当我定义包含只写属性的接口时:

public interface IModuleScreenData
{
    string Name { set; }
}
Run Code Online (Sandbox Code Playgroud)

并试图(天真地)明确地实施它,并且该财产也有一个公开可用的getter:

public class ModuleScreen : IModuleScreenData
{
    string IModuleScreenData.Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后我收到以下错误:

错误'IModuleScreenData.Name.get'添加了在接口成员'IModuleScreenData.Name'中找不到的访问者

但是,在使用这种替代语法之后,或多或少会出现错误:

public class ModuleScreen : IModuleScreenData
{
    public string Name { get; IModuleScreenData.set; }
}
Run Code Online (Sandbox Code Playgroud)

我没有编译,我想我想做的事情是不可能的.我是对的,还是有一些秘密的语法呢?

Dan*_*ant 11

你可以这样做:

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

    public string Name { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

另外,我通常不建议使用仅限属性.一种方法可以更好地表达意图.