Verwenden Sie keine Bibliotheken von Drittanbietern, um Methodenaufrufe in C# abzufangen
Es gibt mehrere Möglichkeiten, Methodenaufrufe in C# abzufangen, ohne eine externe Bibliothek zu verwenden, obwohl keine davon einfach ist. Nachfolgend sind zwei Optionen aufgeführt, die Sie in Betracht ziehen sollten:
erbt die Zielklasse von MarshalByRefObject
oder ContextBoundObject
und definiert eine von IMessageSink
geerbte Eigenschaft. Ändern Sie diese Eigenschaft, um Methodenaufrufe abzufangen und die entsprechende Protokollierungsmethode aufzurufen. Dieser Ansatz kann jedoch die Leistung erheblich beeinträchtigen.
Verwenden Sie Reflektion, um Klassen zu überprüfen, Eigenschaften abzurufen und Code in vorhandene Methoden einzufügen. Dies erfordert ein tiefes Verständnis der Reflexion und ist aufgrund der Einschränkungen von Reflection.Emit
möglicherweise nicht durchführbar oder zuverlässig. Alternativ könnten Sie die Verwendung von Erweiterungen für den CLR-Compiler in Betracht ziehen. Dies erfordert jedoch Fachwissen, über das C#-Entwickler normalerweise nicht verfügen.
Teil der Lösung, der mit der aufrufenden Methode geändert wurde:
Wenn eine Änderung der Caller.Call
-Methode zulässig ist, ist die Lösung einfacher zu handhaben. Durch die Verwendung eines Abfangproxys oder das Erstellen einer neuen Klasse, die dieselbe Schnittstelle wie Traced
implementiert, ist es möglich, Methodenaufrufe abzufangen und die erforderliche Protokollierung durchzuführen, bevor an die ursprüngliche Klasse delegiert wird. Dieser Ansatz erfordert einige Umgestaltungen, vermeidet jedoch die Komplexität von AOP in C#.
Das obige ist der detaillierte Inhalt vonWie kann ich Methodenaufrufe in C# ohne externe Bibliotheken abfangen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!