当我定义一个包含只写属性的接口(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/