如何从C#基Record实例创建派生Record?有没有专属快捷方式?
从基Record生成派生Record的快捷方式
我们知道用with关键字可以基于现有Record实例生成新实例,继承其部分或全部属性值。那有没有类似的Record专属快捷方式,能从基Record生成派生Record?
给出的示例代码如下:
public record class root { public string name { get; set; } } public record class extended : root { public string surname { get; set; } } //从root中获取共享属性 public extended from(root rt, string surname) { return //??? } public example() { root rt = new root() { name = "jhon" }; extended ext = from(root rt, "wick"); }
虽然可以用反射或者接收root参数的自定义构造函数实现,但想知道有没有Record专属的简便方法。
可行方案
实际上可以利用Record自动实现的实例构造函数特性,编写如下代码:
protected extended(root original, string surname) : base(original) { this.Surname = surname; }
这种方式无需手动复制基类属性值,能有效避免代码重复。
内容的提问来源于stack exchange,提问作者Andrea Bardelli
相关产品推荐
相关产品推荐

