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
。
我是否错过任何可能出现二进制向后兼容性的情况?