You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不同API请求类复用重复属性的实现方案,使用继承是否合理?

方案可行性结论

将公共属性提取到基类再由两个请求类继承的方案完全合理,是这类同业务域DTO属性复用的标准实现方式,不会对原有API逻辑造成任何兼容性影响,同时大幅降低后续维护成本(公共字段修改仅需改基类一处即可)。

具体实现步骤

  1. 先定义抽象基类存储公共属性,抽象类可以避免被意外实例化作为请求参数使用:
public abstract class TransactionRequestBase
{
    public string Name { get; set; }
    public string Publisher { get; set; }
}
  1. 修改原有两个请求类,改为继承上述基类,删除重复的公共属性定义即可:
public class TransactionGroup : TransactionRequestBase
{
    public string Cost { get; set; }
}

public class TransactionHistory : TransactionRequestBase
{
    public string StartDate { get; set; }
    public string EndDate { get; set; }
}

补充优化建议

  • 原有API的接口代码不需要做任何修改,ASP.NET Core的模型绑定机制会自动识别继承而来的属性,JSON/表单参数的绑定逻辑和之前完全一致。
  • 如果需要对Name、Publisher做参数校验(比如非空校验、长度校验),可以直接在基类的属性上添加[Required]等数据注解特性,所有子类会自动继承校验规则,不需要重复编写校验代码。
  • 如果你使用的是C# 9及以上版本,用记录(record)类型来定义这类请求DTO会更简洁:
// 基类记录
public abstract record TransactionRequestBase(string Name, string Publisher);
// 子类继承
public record TransactionGroup(string Name, string Publisher, string Cost) : TransactionRequestBase(Name, Publisher);
public record TransactionHistory(string Name, string Publisher, string StartDate, string EndDate) : TransactionRequestBase(Name, Publisher);

内容的提问来源于stack exchange,提问作者thomsan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:54:04