我正在使用一些遗留代码并拥有这个现有界面:
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/