C# 初始化继承的记录形式基础记录

问题描述 投票:0回答:1

我有一个基本记录类型和一个继承的记录类型,它添加了一些字段。 在运行时,我有一个基本记录类型的实例,并希望将其转换为继承记录类型的实例,而不需要重新输入所有参数。

我尝试了以下方法:

   public record BaseRecord(string firstName, string lastName);
   public record ChildRecord(BaseRecord baseRecord, DateTime dateOfBirth) : BaseRecord(baseRecord);

现在我可以执行以下操作:

            var baseRecord = new BaseRecord("John", "Doe");
            var childRecord = new ChildRecord(baseRecord, new DateTime(2000, 1, 1));

但不幸的是,ChildRecord 现在有一个 BaseRecord 类型的属性“baseRecord”,尽管它被委托给基本构造函数,但通常会导致其被省略并且不会作为属性添加到记录中(至少我认为)

enter image description here

有什么方法可以阻止创建“baseRecord”属性吗?

我不想像C#从基本记录实例创建派生记录那样编写所有字段

c# inheritance constructor record
1个回答
0
投票

需要手动添加构造函数和属性。

public record ChildRecord : BaseRecord
{
    public DateTime dateOfBirth { get; set; }

    public ChildRecord(BaseRecord baseRecord, DateTime dateOfBirth)
        : base(baseRecord)
        => this.dateOfBirth = dateOfBirth;
}
© www.soinside.com 2019 - 2024. All rights reserved.