删除泛型类型约束是否安全?

时间:2017-05-17 15:04:36

标签: c# generics backwards-compatibility

interface IFoo<in T> where T : Bar {
    Do(T bar);
}

是否可以通过删除T上的约束来打破任何内容?

我认为你不能破坏IFoo的任何实现,因为它们要么使用具体类型MyFoo : IFoo<MyBar>来实现它,要么当实现是通用的时它们声明相同/更强的约束本身MyFoo<T> : IFoo<T> where T : MyBar

我也不认为你可以破坏界面的任何用法,因为这样的方法再次传递具体类型foo.Do(new MyBar)或者它声明相同/更强的约束UseFoo<T>(...) where T : MyBar

我是否错过任何可能出现二进制向后兼容性的情况?

0 个答案:

没有答案