假设我们有class X
版本 1 的程序集A.dll
:
class X {
SomeType Property { set; get; }
}
然后在程序集的第 2 版中A.dll
:
class X {
SomeType Property { set; get; }
SomeType OtherProperty { set; get; }
}
现在假设我们有第二个程序集B.dll
加载A.dll
并使用 X。添加属性会OtherProperty
破坏 ABI 吗?将B.dll
无法使用A.dll
/ X
?如果不是,声明的顺序会有什么不同吗?如果这些属性是虚拟的,它有什么不同吗?
我想我真的在问:一般的 ABI 规则是什么?我知道在发布后更改接口是一件坏事,但我真的希望能够在某些情况下添加属性,而无需添加子类。