让我们直接开始吧:
旧代码:
public interface IFoo {}
public class Foo : IFoo {}
...
public static IFoo Bar() { return new Foo(); }
新代码:
public static Foo Bar() { return new Foo(); }
显然这里应该没有问题,你在旧返回类型上所做的一切,你仍然可以在新返回类型上做, anyis
或as
cast 应该和以前一样......
那么我是否破坏了二进制兼容性,或者我可以将其作为次要版本发布而不打扰用户?