Supongamos que tenemos el class X
en la versión 1 del conjunto de A.dll
:C# interfaz de rotura, ABI
class X {
SomeType Property { set; get; }
}
y luego en la versión 2 del conjunto de A.dll
:
class X {
SomeType Property { set; get; }
SomeType OtherProperty { set; get; }
}
Ahora supongamos que tenemos una segundo conjunto B.dll
que carga A.dll
y utiliza X. ¿La adición de la propiedad OtherProperty
rompe el ABI? ¿No se usará B.dll
A.dll
/X
? De no ser así, ¿el orden de las declaraciones haría alguna diferencia? Si las propiedades hubieran sido virtuales, ¿había hecho alguna diferencia?
Supongo que realmente estoy preguntando: ¿cuáles son las reglas generales de ABI? Sé que cambiar las interfaces después de que se han publicado es algo malo, pero realmente me gustaría poder agregar propiedades en algunas instancias, sin agregar subclases.
Ver: una guía definitiva sobre los cambios de API en .NET http: // stackoverflow.com/questions/1456785/a-definite-guide-to-api-breaking-changes-in-net – Ani
¿Cómo está cargando los archivos DLL? –
@Mark: tengo clientes de terceros que hacen referencia a algunos de mis ensamblajes. Tengo un par de clases que quiero extender con algunas propiedades. Quiero hacerlo sin requerir que los terceros recompilen sus asambleas. Podría preguntarles amablemente, pero preferiría no hacerlo. Simplemente agrega más tiempo de respuesta ... –