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

如何让C#中的遗留类与记录共享同一方法实现?

复用接口方法实现的可行方案

可以实现代码复用,下面是几种实用的操作方式:

1. 提取逻辑到静态工具类

把ExampleMethod的核心逻辑抽离到独立的静态工具类中,让两个实现类直接调用这个工具方法,既实现复用,又不影响原有类的结构。

示例代码:

// 原接口定义
public interface IExample
{
    void ExampleMethod();
}

// 复用逻辑的静态工具类
public static class ExampleLogicHelper
{
    public static void RunExampleLogic()
    {
        // 这里放原本在ExampleMethod里的核心业务代码
        Console.WriteLine("执行复用的ExampleMethod逻辑");
        // 其他业务逻辑...
    }
}

// 遗留类实现接口,调用工具类方法
public class ExampleClass : IExample
{
    public void ExampleMethod()
    {
        ExampleLogicHelper.RunExampleLogic();
        // 可选:添加ExampleClass特有的额外逻辑
    }
}

// 记录类实现接口,同样调用工具类方法
public record ExampleRecord : IExample
{
    public void ExampleMethod()
    {
        ExampleLogicHelper.RunExampleLogic();
        // 可选:添加ExampleRecord特有的额外逻辑
    }
}

2. 使用默认接口方法(C# 8.0及以上)

在IExample接口中直接实现ExampleMethod的默认逻辑,这样实现类如果不需要自定义逻辑,就无需重写,直接继承接口的默认实现。

示例代码:

public interface IExample
{
    // 接口中定义默认实现
    void ExampleMethod()
    {
        Console.WriteLine("执行接口默认的ExampleMethod逻辑");
        // 核心业务代码...
    }
}

// 遗留类直接使用默认实现,无需重写
public class ExampleClass : IExample
{
    // 如果需要自定义,再重写ExampleMethod即可
}

// 记录类同理,默认使用接口的实现
public record ExampleRecord : IExample
{
    // 按需重写方法
}

注意:默认接口方法无法访问实现类的私有成员,如果逻辑需要依赖类的内部状态,这种方式不太适用。

3. 抽象基类共享实现(有继承条件时用)

如果ExampleClass和ExampleRecord没有其他父类限制,可以定义一个抽象基类实现IExample并提供ExampleMethod的通用逻辑,让两者继承这个基类。

示例代码:

public abstract class BaseExample : IExample
{
    // 提供通用实现,子类可按需重写
    public virtual void ExampleMethod()
    {
        Console.WriteLine("执行基类共享的ExampleMethod逻辑");
        // 核心业务代码...
    }
}

// 遗留类继承基类
public class ExampleClass : BaseExample
{
    // 可选:重写ExampleMethod添加自定义逻辑
}

// 记录类继承基类
public record ExampleRecord : BaseExample
{
    // 可选:重写ExampleMethod添加自定义逻辑
}

注意:C#是单继承,如果遗留类已经有父类,这种方式就无法使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:03:07