2

我有一个抽象类“建筑”:

public abstract class Building {
abstract public int ID {get;}
abstract public string name {get;}
}

类(例如)总部:建筑具有这些 getter 和 setter 方法的变量。问题是我必须在每个子类中写

private int _ID = 1;
public int ID {
    get {return _ID;}
}

有没有办法在抽象类中创建一个像前面一样的getter setter方法并保存代码,这样我只需要设置变量?感谢您的帮助。

4

2 回答 2

5

您可以使设置器受保护,和/或允许它们在构造函数中设置,而不是使属性抽象:

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; }
}

这会将实现移动到基类中,但仍然只允许子类设置这些值。

于 2013-05-28T23:10:18.137 回答
1

您可以尝试protected在基类中添加 setter 并在派生类的 ctor 中设置值:

public class Building
{
     public int Id{get;protected set;}

在派生类中:

public class Headquarter: Building
{
    public Headquarter()
    {
        Id = 1;
    }
}
于 2013-05-28T23:15:27.833 回答