当我定义包含只写属性的接口时:
public interface IModuleScreenData
{
string Name { set; }
}
并试图(天真地)明确地实施它,并希望该财产也有一个公开可用的吸气剂:
public class ModuleScreen : IModuleScreenData
{
string IModuleScreenData.Name { get; set; }
}
然后我收到以下错误:
错误'IModuleScreenData.Name.get'添加了一个未找到的访问者 接口成员'IModuleScreenData.Name'
但是,在使用这种替代语法之后,或多或少会出现错误:
public class ModuleScreen : IModuleScreenData
{
public string Name { get; IModuleScreenData.set; }
}
无法编译,我想我想做的事情真的不可能。我是对的,还是有一些秘密的 sauce 语法?
答案 0 :(得分:11)
你可以这样做:
public class ModuleScreen : IModuleScreenData
{
string IModuleScreenData.Name
{
set { Name = value; }
}
public string Name { get; private set; }
}
另一方面,我通常不建议使用仅设置属性。一种方法可以更好地表达意图。
答案 1 :(得分:-1)
您无法更改继承类中接口的实现方式。这就是重点..如果你需要对一个属性做一些新的事情,你可以创建一个引用继承的属性特定实现的新属性。接口在那里,因此您可以符合指定的对象继承标准。
更新: 第二个想法..你应该能够做到这一点....这将编译好:
public class ModuleScreen : IModuleScreenData
{
public string Name { get; set; }
}