簡體   English   中英

如何從基類繼承並添加另一個屬性?

[英]How do I inherit from a base class and add another property?

我有一個用於構造請求對象以傳遞給 API 的類:

public class BaseRequest
{
    public string messageId { get; set; }
    public string timestamp { get; set; }
    public string updatedAtMin { get; set; }
    public int page { get; set; }

    public BaseRequest(DateTime updatedAtMin, int page)
    {
        this.messageId = Guid.NewGuid().ToString();
        this.timestamp = DateTime.UtcNow.ToString("o");
        this.updatedAtMin = updatedAtMin.ToString("o");
        this.page = page;
    }
}

但是,存在需要將可選參數添加到請求對象的邊緣情況。 我的第一個想法是從 BaseRequest 類繼承,但我不知道如何創建它並使其語法正確。

public class CaseRequest : BaseRequest
{
    public bool extraParameter { get; set; }

    public CaseRequest(bool extraParameter) : base()
    {
        this.extraParameter = extraParameter;
    }
}

錯誤:沒有給出對應於 'BaseRequest.BaseRequest(DateTime, int) 的必需形式參數 'updatedAtMin' 的參數

有人可以幫忙嗎? 本質上,我想用通常的構造函數創建一個 BaseRequest 的實例,但添加了 extraParameter。

非常感謝,並為我可悲的無知道歉!

您的基類的構造函數具有參數:

public BaseRequest(DateTime updatedAtMin, int page)

但是您沒有為這些參數傳遞任何值:

base()

理想情況下,您可以擴展構造函數以接受這些參數並傳遞它們:

public CaseRequest(DateTime updatedAtMin, int page, bool extraParameter) : base(updatedAtMin, page)
{
    this.extraParameter = extraParameter;
}

如果您不希望用戶設置它們,您也可以傳遞默認值。 或者在基類中創建一個無參數的構造函數。 等等。只要你傳遞一些東西來滿足基本構造函數。

您的問題很簡單,如錯誤所示。

沒有給出對應於 'BaseRequest.BaseRequest(DateTime, int) 的必需形式參數 'updatedAtMin' 的參數

您在 BaseRequest 中定義了一個構造函數。 這消除了默認的無參數構造函數。 意思是...

公共 CaseRequest(bool extraParameter) : base()

找不到 base() 因為 base () 不存在。

您必須接受另一個參數並將它們傳遞到定義的基類中以在語法上正確。

您可以嘗試以下操作

public class BaseRequest
{
    public string messageId { get; set; }
    public string timestamp { get; set; }
    public string updatedAtMin { get; set; }
    public int page { get; set; }

    public BaseRequest(DateTime updatedAtMin, int page)
    {
        this.messageId = Guid.NewGuid().ToString();
        this.timestamp = DateTime.UtcNow.ToString("o");
        this.updatedAtMin = updatedAtMin.ToString("o");
        this.page = page;
    }

    public BaseRequest() {
    }
}

public class CaseRequest : BaseRequest
{
    public bool extraParameter { get; set; }

    public CaseRequest(bool extraParameter) : base()
    {
        this.extraParameter = extraParameter;
    }
}

暫無
暫無

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

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