如何在不破坏客户端的情况下在C#中的接口中为方法添加参数?

时间:2017-11-14 02:37:08

标签: c# interface

我在C#应用程序中编写了一个公共接口,它具有以下方法:

IMimic OpenMimic(string mimicPath, string frameModel, string branch, int regionId);

我还编写了一个实现此接口的抽象基类,同时,我编写了一个实现此基类的公共密封类。

现在,我需要为此方法添加一个参数,如下所示:

IMimic OpenMimic(string mimicPath, string frameModel, string branch, int regionId, IAlsContext mimicContext);

这意味着我需要对我的基类和密封实现进行更改。

现在,有一些客户端应用程序(由我的组织中的其他团队编写)使用此类并调用此方法的旧版本。如果我改变这个方法,我也被迫改变界面。

这不会打破客户吗?这是一个典型的突破性变化的例子吗?我该如何修复它以便客户不会破坏?问题是这个新参数是必需的参数,我不是接口编程专家。

谢谢,

1 个答案:

答案 0 :(得分:6)

  

不会打破客户?

是的。

  

这是一个典型的突破性变化的例子吗?

是的。

  

如何修复它以便客户不会中断?

您永远不会改变客户端所依赖的公共接口。

编写一个新接口 - 可能是扩展旧接口的接口 - 并使用具有正确签名的新方法。

然后实现您的类以实现新的和旧的接口。您可能必须使用显式接口方法来执行此操作。

客户继续工作;他们可以选择按计划进入新界面。

您也可以考虑将旧界面标记为"过时"在 next 版本中,然后在之后删除版本

  

问题是这个新参数是必需参数,我不是界面编程方面的专家。

嗯,现在你比昨天更了解界面编程!