簡體   English   中英

擴展了C#中用於類的簡單getter,setter方法

[英]Extends simple getter, setter Methods for Classes in C#

我有一個抽象類“建築”:

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

該類(例如)Headquarter:Building具有這些getter和setter方法的變量。 問題是我必須在每個子類中編寫

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

有沒有一種方法可以在抽象類中創建例如前面的getter setter方法並保存代碼,這樣我只需要設置變量? 感謝您的幫助。

您可以使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; }
}

這會將實現移到基類中,但仍僅允許子類設置這些值。

您可以嘗試在基類中添加protected setter,並在派生類的ctor中設置值:

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

並在派生類中:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM