2013-05-28 26 views
2

爲類setter方法我有一個抽象類,「建設」:擴展簡單的getter,在C#

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

寫有沒有一種方法來創建例如一個吸氣setter方法一樣進取,在abstract class和保存代碼,所以我只需要設置的變量? 感謝您的幫助。

回答

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

這使實施入基類,但仍然只允許子類來設置這些值。

1

你可以嘗試添加在基類protected setter和在派生類構造函數的設定值:

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

,並在派生類中:

public class Headquarter: Building 
{ 
    public Headquarter() 
    { 
     Id = 1; 
    } 
}