Skip to Content
Neue Version 12 verfügbar 🎉

Abdeckung

Dynamic Proxy ersetzt direkte Anweisungen call, callvirt und newobj. Abgedeckt sind statische Aufrufe, Instanzaufrufe, virtuelle Aufrufe und Schnittstellenaufrufe, Accessoren von Eigenschaften und Ereignissen, die Objekterzeugung, Aufrufe auf generischen Typen (zum Beispiel List<int>.Add) und Aufrufe generischer Methoden, darunter LINQ-Operatoren wie Where, Select und OrderBy.

Damit sich das verschleierte Programm genau wie das Original verhält, werden einige Aufrufe absichtlich nicht über einen Proxy geleitet und bleiben direkte Aufrufe:

  • Aufruferabhängige Methoden, deren Ergebnis von der aufrufenden Methode oder Assembly abhängt: Assembly.GetExecutingAssembly, Assembly.GetCallingAssembly und MethodBase.GetCurrentMethod. Würden sie über einen Proxy geleitet, änderte sich der beobachtete Aufrufer, und das Ergebnis wäre falsch.
  • Verweisrückgaben (ref), die ein Delegat nicht zurückgeben kann.
  • Konstruktoren von Werttypen und Konstruktoren von Delegaten.
  • Generische Methoden auf generischen Typen sowie generische Aufrufe, deren Typargumente offene Typen, als Verweis übergebene Typen oder Zeigertypen sind.

Diese Aufrufe laufen unverändert. Jeder andere geeignete Aufruf wird über einen Proxy geleitet.

Last updated on