gpt4 book ai didi

C# 接口(interface)太死板

转载 作者:行者123 更新时间:2023-11-30 14:13:53 25 4
gpt4 key购买 nike

我正在使用一些遗留代码并拥有这个现有界面:

public interface IProcess
{
IDTO Process(IDTO request);
}

然后有一个带有巨大 switch 语句的工厂返回实现该接口(interface)的对象(其中 17 个)。创建的对象然后调用过程如下:

return xProcess.Process(requestDTO);

我的问题是我现在需要更改其中的一些以传递第二个参数,例如:

xProcess.Process(requestDTO, Id);

我正在寻找一种优雅的方式来实现这一点。

我试过使接口(interface)成为一个抽象类,例如:

public abstract class IProcess
{

public virtual IDTO Process(IDTO request)
{
return null;
}

public virtual IDTO Process(IDTO request, int Id)
{
return null;
}
}

这允许我覆盖创建的类中的 Process 方法,但我有一个问题,即 IProcess 由另一个接口(interface)继承,现在显然已损坏。

遗留平台庞大,测试覆盖率不高,因此我正在寻找一个对其余代码库影响最小的优雅解决方案。也许,我忽略了一种模式?

有人可以帮忙吗? (例子会很棒)

谢谢

大卫

最佳答案

你能不能创建一个继承自现有接口(interface)的新接口(interface),比如

public interface IProcess2 : IProcess
{
IDTO Process(IDTO request, int Id);
}

然后更改您的类以继承新类。

这应该会阻止现有 IProcess 的任何用户中断。

关于C# 接口(interface)太死板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13269222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com