如何从基类继承并添加另一个属性?

Edw*_*rdo 0 c# inheritance

我有一个用于构造请求对象以传递给 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,存在需要将可选参数添加到请求对象的边缘情况。我的第一个想法是从 BaseRequest 类继承,但我不知道如何创建它并使其语法正确。

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

    public CaseRequest(bool extraParameter) : base()
    {
        this.extraParameter = extraParameter;
    }
}
Run Code Online (Sandbox Code Playgroud)

错误:没有给出对应于 'BaseRequest.BaseRequest(DateTime, int) 的必需形式参数 'updatedAtMin' 的参数

有人可以帮忙吗?本质上,我想用通常的构造函数创建一个 BaseRequest 的实例,但添加了 extraParameter。

非常感谢,并为我可悲的无知道歉!

Dav*_*vid 6

您的基类的构造函数具有参数:

public BaseRequest(DateTime updatedAtMin, int page)
Run Code Online (Sandbox Code Playgroud)

但是您没有为这些参数传递任何值:

base()
Run Code Online (Sandbox Code Playgroud)

理想情况下,您可以扩展构造函数以接受这些参数并传递它们:

public CaseRequest(DateTime updatedAtMin, int page, bool extraParameter) : base(updatedAtMin, page)
{
    this.extraParameter = extraParameter;
}
Run Code Online (Sandbox Code Playgroud)

如果您不希望用户设置它们,您也可以传递默认值。或者在基类中创建一个无参数的构造函数。等等。只要你传递一些东西来满足基本构造函数。