2009-07-14 4 views
0

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?

+0

Versuchen Sie, den Lizenzierungscode der Bibliothek zu umgehen? – SLaks

+0

würde dies als etwas unethisch betrachtet werden? –

+0

würde ich nie darüber nachdenken! – usr

Antwort

2

Versuchen Sie die MethodRental.SwapMethodBody Methode.

+0

Wie wird diese Methode verwendet? du muss ich selbst binär erzeugen? – usr

+0

Gemäß der Seite, die Sie verknüpft haben, funktioniert es nur für dynamische Module. – Giorgi

+0

@Giorgi: Du hast Recht; Das habe ich nicht bemerkt. – SLaks

-1

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.

+0

ist es eine statische Methode. – usr

0

Sie können die Aufrufer dieser Methode abfangen und true zurückgeben, anstatt sie aufzurufen. Vielleicht kannst du mehr Details posten.

+0

Nein, kann er nicht. Lesen Sie die Frage – SLaks

+0

SLaks, ich benutze Reflexion, er könnte die Anrufer dieser Methode abfangen. Ich habe die Frage gelesen. – user134706

+0

Wie? – SLaks

0

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();;)

-1

Unterklasse und Override. Wenn Sie keine Unterklasse erstellen können, verwenden Sie ein Decorator-Muster.

+0

Er kann auch nicht - es ist eine statische Methode (siehe ersten Kommentar zur ersten Antwort) und er kontrolliert nicht die Call-Sites – SLaks