Предположим, что мы имеем class X
в версии 1 сборки A.dll
:C# интерфейс поломка, ABI
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? Will B.dll
не используется A.dll
/X
? Если нет, будет ли порядок заявлений иметь какое-либо значение? Если свойства были виртуальными, если бы это имело какое-либо значение?
Наверное, я действительно спрашиваю: каковы общие правила ABI? Я знаю, что изменение интерфейсов после их публикации плохо, но я действительно хотел бы иметь возможность добавлять свойства в некоторых случаях без добавления подклассов.
См.: Определенное руководство по изменению API-интерфейсов в .NET http: // stackoverflow.com/questions/1456785/a-definite-guide-to-api-break-changes-in-net – Ani
Как вы загружаете библиотеки DLL? –
@Mark: У меня есть сторонние клиенты, которые ссылаются на некоторые из моих сборок. У меня есть несколько классов, которые я хочу расширить с помощью нескольких свойств. Я хочу сделать это, не требуя от третьих сторон перекомпилировать свои сборки. Я мог бы попросить их красиво, но я бы предпочел. Он просто добавляет больше времени на поворот ... –