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

如何在两个DTO类间共享外部类中的判断方法(免大范围修改)

解决方案:泛型方法+重载适配

因为DriverScheduleAtmDto继承自DriverScheduleDto,我们可以用泛型方法提取重复逻辑,同时保留原有方法签名作为重载,完全不影响现有调用代码。

1. 提取泛型核心方法

创建一个泛型方法,通过泛型约束限制参数必须继承自DriverScheduleDto,这样可以安全访问父类的FullName、CreatedDate、DriverStatus属性:

private bool IsDriverActive<T>(T dto, List<List<T>> results) where T : DriverScheduleDto
{
    var group = results.SelectMany(item => item).Where(x => x.FullName == dto.FullName);
    var mostRecent = group.OrderBy(g => g.CreatedDate).Last();
    return mostRecent.DriverStatus == "Active" || mostRecent.DriverStatus == "Probation";
}

2. 保留原有方法作为重载适配

原来的两个方法不需要修改逻辑,直接调用泛型方法即可,这样现有代码的所有调用处都无需改动:

private bool IsDriverActive(DriverScheduleDto dto, List<List<DriverScheduleDto>> results)
{
    return IsDriverActive<DriverScheduleDto>(dto, results);
}

private bool IsDriverActive(DriverScheduleAtmDto dto, List<List<DriverScheduleAtmDto>> results)
{
    return IsDriverActive<DriverScheduleAtmDto>(dto, results);
}

方案优势

  • 彻底消除代码冗余,实现逻辑复用
  • 无需修改现有DTO类,也不需要新增接口/基类,对系统侵入极小
  • 原有方法签名完全保留,所有调用代码无需调整
  • 泛型约束保证类型安全,避免非法类型传入的问题

内容的提问来源于stack exchange,提问作者The Sheek Geek

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 07:24:57