我有一个抽象类'Building':
public abstract class Building {
abstract public int ID {get;}
abstract public string name {get;}
}
类(例如)总部:Building具有这些getter和setter方法的变量。问题是我必须在每个子类中编写
private int _ID = 1;
public int ID {
get {return _ID;}
}
有没有办法在抽象类中创建一个像前面一个getter setter方法并保存代码,这样我只需要设置变量? 谢谢你的帮助。
答案 0 :(得分:5)
不是使属性抽象,而是可以使setter受到保护,和/或允许在构造函数中设置它们:
public abstract class Building
{
// Optional constructor
protected Building(int id, string name)
{
this.ID = id;
this.Name = name;
}
public int ID { get; protected set; }
public string Name { get; protected set; }
}
这会将实现移动到基类中,但仍然只允许子类设置这些值。
答案 1 :(得分:1)
您可以尝试在基类中添加protected
setter,并在派生类的ctor中设置值:
public class Building
{
public int Id{get;protected set;}
并在派生类中:
public class Headquarter: Building
{
public Headquarter()
{
Id = 1;
}
}