HintergrundDelphi Prism Cirrus den Zugriff und die Einstellung das Ergebnis einer Funktion
Diese Frage bezieht sich auf die neue Cirrus Infrastruktur für Aspect Oriented Programming in Delphi Prism.
Ich habe derzeit einen Aspekt, der ich Auto-Injecting in eine Klasse bin und versuche, den Zielcode mit aMethod.SetBody Funktion zu ändern. Ich habe meinen Code bisher mit dem Logging-Beispielcode strukturiert, der im Dokumentations-Wiki Cirrus Introduction als Grundlage zu finden ist.
Frage
Wie kann ich das Ergebnis der Funktion Zugang in injiziert werden, sowohl mit als auch ohne die ursprüngliche Funktion Körper ausgeführt wird?
Ich möchte in der Lage sein, das Ergebnis der Funktion zu legen, die den Aufruf von OriginalBody in einem Codepfad und als den anderen Codepfad umwandelt, um den OriginalBody aufzurufen und das nachfolgende Ergebnis des OriginalBody in meinem Aspektcode zu verwenden. Ich dachte ursprünglich, dass dies der beabsichtigte Zweck der Aspects.RequireResult-Methode sein könnte, aber dies scheint die Ausführung des OriginalBody in meinem Fall zu erzwingen, was Code-Duplikation verursacht.
aussehen würde, wenn ich versuche, eine Zeichenfolge zu verwenden, innerhalb der Datenwert (die Zielfunktion gibt eine Zeichenfolge zurück) Ich erhalte einen internen Fehler. Muss dieser Code aktualisiert werden, wenn ich eine Zeichenfolge verwende? – jamiei
Solange SomeMethod eine Zeichenfolge zurückgibt und der Parameter im neuen DataValue auch eine Zeichenfolge ist, sollten Sie in Ordnung sein. – Mosh
Ich bekomme (CE7) Interner Fehler (D03) in RemObjects.Oxygene.targets, wenn ich beim Aufheben der Zuweisung der Zuweisungsstatement durch eine Zeichenfolge ersetzen, was genau tut der DataValue()? – jamiei