为什么演进界面很难?

时间:2012-06-03 12:42:03

标签: c#-4.0 interface

我想知道为什么会这样:

向接口添加方法会破坏它的所有实现...... ??? ...一旦接口出厂,您就没有机会在不破坏使用该接口的代码的情况下进行更改。 ...

在很多论坛讨论中遇到过这些问题,但没有人解释如何...

如果我向接口添加任何方法(比如IMyInterface)并且只是将方法的功能添加到实现此接口的类/类中,那么它是如何破坏我的代码的呢? ..它很简单! ......不是吗? ..(将方法签名添加到接口并在类中实现它们),就像我向某个类添加一个方法来扩展其功能,我的代码将得到更新。 当然,在设计问题时类和接口的目的是不同的。

1 个答案:

答案 0 :(得分:2)

如果同时提供接口和实现,并且代码完全在您的应用程序内部,那么问题主要是理论上的。当您在dll中提供接口并且其他人在其dll中提供实现时,问题变为现实。可能发生这种情况的一个例子是插件系统或设备驱动程序。

程序启动时,两个dll在运行时链接。如果您在新版本的dll中更新了接口,那么编译为旧版本的实现dll的类对该接口不再有效,程序将无法启动。然后将人们锁定到您的旧版本,直到他们的实施dll(可能来自不同的供应商)更新以反映新版本。