Ich lerne gerade über C# -Erweiterungsmethoden. Ich habe an einigen Stellen gelesen, dass das Hinzufügen von Membern zu Klassen die Rückwärtskompatibilität für Code reduziert, der diese Klassen verwendet.Wie reduziert das Hinzufügen von Mitgliedern die Rückwärtskompatibilität von Klassen?
Ich habe dies hier lesen: https://blogs.msdn.microsoft.com/vbteam/2007/03/10/extension-methods-best-practices-extension-methods-part-6/
Und Seite 418 von Pro C# Buch Troelson.
Ich fürchte, das macht keinen Sinn für mich. Sicherlich wird jeder Code, der Instanzen dieser Klassen verwendet, wie sie vor dem Hinzufügen zusätzlicher Member verwendet wurden (ohne Erweiterungsmethoden zu verwenden, nur indem sie zur Klasse hinzugefügt werden), immer noch alle alten Methoden, Eigenschaften, Felder und Konstruktoren aufrufen können vorher, wie sie sich nicht geändert haben. Selbst wenn die neuen Mitglieder den Status des Objekts ändern können, werden sie niemals im alten Code aufgerufen, daher ist der Code abwärtskompatibel.
Was sehe ich hier nicht?
Sie sehen nicht, wie sich das Ändern des Codes, der beim Aufruf einer bestimmten Methode für eine Instanz eines Typs von einer Implementierung in eine andere ausgeführt wird, möglicherweise auf diesen Code auswirkt? – Servy
Ich habe es nicht als Ändern des Codes gesehen, eher zur Klasse hinzufügen. Natürlich kann ich sehen, dass es gefährlich ist, mit Code zu hantieren, von dem andere Klassen abhängig sind. Das Hinzufügen einer Methodenüberladung, die Vorrang vor der ursprünglichen Methode für bestimmte Parameter hat (die in den alten Codemethodenaufrufen verwendet werden könnte), wie in der unten akzeptierten Antwort, ist jedoch ein klares Beispiel dafür, was genau schief gehen kann, was ich nicht getan habe gedacht an. –
@GeorgeWooding, Ein zweites Beispiel zu meiner Antwort hinzugefügt. – devuxer