【发布时间】:2014-11-11 19:04:34
【问题描述】:
为了在 .NET 中保持二进制向后兼容性,通常不能向公共类和接口添加新的抽象方法。如果这样做,那么针对扩展/实现您的类/接口的旧版本程序集构建的代码将在运行时失败,因为它无法完全扩展/实现新版本。然而,对于类,有一个方便的解决方法:
public abstract class Foo {
internal Foo() { }
}
因为 Foo 的构造函数是内部的,所以我的程序集之外的任何人都不能扩展 Foo。因此,我可以向 Foo 添加新的抽象方法而不必担心向后兼容性,因为我知道另一个程序集中的任何类都不能扩展 Foo。
我的问题是,接口是否有类似的技巧?我可以创建一个公共接口并以某种方式保证我的程序集之外的任何人都无法创建它的实现吗?
【问题讨论】:
标签: c# interface abstract backwards-compatibility