3
我与一些旧代码工作,有这样的现有的接口:C#接口过于死板
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;
}
}
这使我覆盖在创建的类的加工方法,但是我有的iProcess由另一个接口,这是现在继承的一个问题明显破碎。
传统平台非常庞大,测试覆盖率并不是很高,所以我正在寻找一个不错的优雅解决方案,对代码库的其余部分影响最小。也许,我忽略了一种模式?
任何人都可以帮忙吗? (例子将是巨大的)
感谢
大卫
谢谢。我确实玩过这个主意,但工厂返回IProcess,并且出现错误,提示我无法将IProcess转换为IProcess2。我错过了什么吗? – davy
是的,工厂也需要改变:) –
@Justin - 绝对:),刚刚添加评论说这就是我需要做的。非常好,非常感谢。 – davy