Обрыв интерфейса C #, ABI

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

9
задан linuxbuild 1 September 2011 в 20:12
поделиться