Rotura de interfaz C #, ABI
Supongamos que tenemos elclass X
en la versión 1 de la asambleaA.dll
:
class X {
SomeType Property { set; get; }
}
y luego en la versión 2 del ensamblajeA.dll
:
class X {
SomeType Property { set; get; }
SomeType OtherProperty { set; get; }
}
Ahora supongamos que tenemos una segunda asambleaB.dll
que cargaA.dll
y usa X. ¿Se agregará la propiedad?OtherProperty
romper el ABI? SeráB.dll
no usarA.dll
/X
? Si no, ¿el orden de las declaraciones haría alguna diferencia? Si las propiedades hubieran sido virtuales, ¿habría hecho alguna diferencia?
Creo que realmente estoy preguntando: ¿cuáles son las reglas generales de ABI? Sé que cambiar las interfaces después de que se hayan publicado es algo malo, pero realmente me gustaría poderañadir propiedades en algunos casos, sin agregar subclases.