Wie kann ich die Implementierung einer Methode zur Laufzeit von return false;
zu return true;
ändern? Ich habe keine Kontrolle über die Methodenimplementierung, da es mit einer Drittanbieterbibliothek geliefert wird. Jede Problemumgehung wird geschätzt. Nochmals: Ich kontrolliere weder die Methode selbst noch die Anrufer.Swap-Methodenimplementierung zur Laufzeit in .NET?
Antwort
Versuchen Sie die MethodRental.SwapMethodBody
Methode.
Ein wenig mehr Info würde helfen. Können Sie die Bibliothek umbrechen und andere Ihren Wrapper aufrufen lassen? Dies könnte auch eine große TDD Avenue sein. Sind Schnittstellen vorhanden, die Sie selbst implementieren können? Auch hier könnte DI Ihnen erlauben, Implementierungen auszutauschen.
ist es eine statische Methode. – usr
Sie können die Aufrufer dieser Methode abfangen und true zurückgeben, anstatt sie aufzurufen. Vielleicht kannst du mehr Details posten.
Nein, kann er nicht. Lesen Sie die Frage – SLaks
SLaks, ich benutze Reflexion, er könnte die Anrufer dieser Methode abfangen. Ich habe die Frage gelesen. – user134706
Wie? – SLaks
Bitte geben Sie weitere Informationen zu Ihrem Problem an. Wenn Sie nur das boolesche Ergebnis umschalten möchten, genügt ein einfacher bool result = !MyMethod();
;)
Unterklasse und Override. Wenn Sie keine Unterklasse erstellen können, verwenden Sie ein Decorator-Muster.
Er kann auch nicht - es ist eine statische Methode (siehe ersten Kommentar zur ersten Antwort) und er kontrolliert nicht die Call-Sites – SLaks
Versuchen Sie, den Lizenzierungscode der Bibliothek zu umgehen? – SLaks
würde dies als etwas unethisch betrachtet werden? –
würde ich nie darüber nachdenken! – usr