Предположим, у нас есть класс 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? Я знаю, что менять интерфейсы после их публикации - это плохо, но я действительно хотел бы иметь возможность добавлять свойств в некоторых случаях без добавления подклассов.