Frage

Betrachten Sie zwei .NET -DLLs. Die erste "application.dll" enthält die Hauptgeschäftslogik und den Datenzugriffscode. Das zweite "WebService.dll" besteht hauptsächlich aus WebMethods, die mit Objekten und Methoden mit application.dll verlinken, um WebService -Anrufe an vorhandene Code bereitzustellen.

Welche Änderungen (z. B. neue Klassen hinzufügen, ein neues Feld oder eine neue Methode hinzufügen, können und können nicht an die Anwendung vorgenommen werden.

War es hilfreich?

Lösung

Die meisten Dinge werden in Ordnung sein; Einige Dinge, die es brechen werden:

  • Entfernen von verwendeten* Typen (es sei denn, Sie verwenden die Typ-Vorsparung)
  • Verwendungsmethoden entfernen (einschließlich Konstruktor)
  • Ändern der Signatur von Methoden (die verwendet werden)
  • Wechseln der öffentlichen Felder in Eigenschaften (die verwendet werden)
  • Veränderung der Serialisierungsinduchs Wenn Serialisierung verwendet wird
  • Hinzufügen einer Methode zu einer Schnittstelle, wobei die zweite DLL über einen Typ verfügt, der diese Schnittstelle implementiert
  • Hinzufügen einer abstrakten Methode zu einer Basisklasse, die in der zweiten DLL geerbt wird
  • Fast alles interne, wenn hacky Reflexion (AB) verwendet wird
  • Hinzufügen von Einschränkungen zu einer generischen Art/Methode
  • Markieren eines Typs als sealed Als es in der zweiten DLL geerbt wurde
  • Hinzufügen eines Feldes zu a struct Wenn der Anrufer eher die Initialisierung der Mitglieder als die Konstruktorinitialisierung verwendet

(Entfernen beinhaltet die Änderung der Zugänglichkeit auf etwas Nicht-Öffentlichkeit)

Andere Tipps

Technisch gesehen wird der Name ihn brechen (Name und Version und Key -Token im Fall von starken benannten Assembiles). Andernfalls wird der Rahmen Versuchen Um die DLL zu laden und zu verwenden, funktioniert dies mehr oder weniger gut, bis sie einen anderen Typ oder eine andere Methodensignatur, einen fehlenden Typ usw. trifft davon).

Ich schlage vor, mehr darüber zu lesen Assembly Versioning Eine Idee zu bekommen, wie man solche Probleme lösen kann.

Sie können Änderungen an der Anwendung vornehmen. Wenn Sie eine Ihrer Anwendungen konsumieren möchten.

Wenn Sie die Signatur oder Zugriffsstufe der Methoden oder Eigenschaften in application.dll, die von webSrvice.dll verwendet werden, ändern, werden Sie Ihren Code in WebService unterbrochen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top