我有以下界面..它有一个错误,我不知道它为什么会发生。基本上,界面部分string DoorDescription { get; private set; }
必须删除private set
才能使其正常工作
namespace test6
{
interface IHasExteriorDoor
{
string DoorDescription { get; private set; }
string DoorLocation { get; set; }
}
class Room : IHasExteriorDoor
{
public Room(string disc, string loc)
{
DoorDescription = disc;
DoorLocation = loc;
}
public string DoorDescription { get; private set; }
public string DoorLocation { get; set; }
}
class Program
{
static void Main(string[] args)
{
Room a = new Room("A","B");
a.DoorLocation = "alien";
//a.DoorDescription = "mars";
}
}
}
答案 0 :(得分:3)
请参阅here
接口不能包含常量,字段,运算符,实例 构造函数,析构函数或类型。接口成员是 自动公开,并且它们不能包含任何访问修饰符。 成员也不能是静态的。
基本上,界面是public contract。
您可以将您的媒体资源设置为只读,然后拥有a private set in the class which implements it。
答案 1 :(得分:2)
界面不能有任何私有方法。
只需从界面中删除setter:
interface IHasExteriorDoor
{
string DoorDescription { get; }
string DoorLocation { get; set; }
}
实现它的类仍然可以拥有该属性的setter,并且由于setter未在接口中定义,因此它可以是私有的。