3

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

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

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

return xProcess.Process(requestDTO);

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

xProcess.Process(requestDTO, Id);

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

我尝试使接口成为抽象类,例如:

public abstract class IProcess
{

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

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

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

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

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

谢谢

大卫

4

1 回答 1

7

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

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

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

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

于 2012-11-07T11:58:27.210 回答