私はいくつかのレガシーコードを使用していて、この既存のインターフェイスを持っています:
public interface IProcess
{
IDTO Process(IDTO request);
}
次に、インターフェイスを実装するオブジェクト(そのうち17個)を返す巨大なswitchステートメントを備えたファクトリがあります。作成されたオブジェクトは、次のようにプロセスを呼び出します。
return xProcess.Process(requestDTO);
私の問題は、次のような2番目のパラメーターを渡すために、これらのいくつかを変更する必要があることです。
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が別のインターフェイスに継承され、明らかに壊れているという問題があります。
従来のプラットフォームは巨大であり、テストカバレッジはあまり良くないので、残りのコードベースへの影響を最小限に抑えた優れたエレガントなソリューションを探しています。おそらく、私が見落としているパターンがありますか?
誰か助けてもらえますか?(例は素晴らしいでしょう)
ありがとう
デビッド