Ich möchte etwas Verhalten zu einer bestimmten Klasse zur Laufzeit hinzufügen. Ich weiß, wie man mit Reflection.Emit zur Laufzeit Unterklassen bildet, aber das ist nicht genug. Abhängig von irgendeiner externen Konfiguration muss ich Opcodes in eine Methode auf einem Typ T injizieren, so dass alle Klassen, die von ihr erben, automatisch dieses Verhalten bekommen .NET Profiling API)Kann Mono.Cecil Code ändern, der bereits in der AppDomain geladen wurde?
Kann so etwas mit Mono.Cecil gemacht werden?
Wenn es nicht möglich ist, Code auf einer geladenen Assembly zu ändern, ist es in Ordnung, wenn ich die Änderungen vornehmen kann, bevor die Assembly geladen wird, und laden Sie dann die geänderte Assembly im Speicher, aber ich weiß nicht, wie ich Assembly laden steuern kann.
Fragen Sie, weil Sie den Code optimieren möchten? Sind Sie offen für die Idee der Probenahme als Alternative zur Instrumentierung? Viele Menschen glauben an Instrumentierung, weil es "genau" ist, was nicht für die Optimierung benötigt wird. Wenn Sie optimieren möchten, betrachten Sie diese Methode: http://stackoverflow.com/questions/375913/what-cani-i-use-to-profile-c-code-in-linux/378024#378024 –
Seine nicht Optimierung Ich suche, was ich will, ist, ein Verhalten zu einem Framework basierend auf der Konfiguration hinzuzufügen. Nehmen wir zum Beispiel den TypeDescriptor-Inspektions-Mechanismus, wenn ich eine Konfiguration lese und eine öffentliche Eigenschaft zu einer Basisklasse T hinzufüge, dann sieht derjenige, der T oder eine seiner Unterklassen mit dem TypeDescriptor-Mechanismus untersucht, die Eigenschaft, aber wenn dieselbe Inspektion durchgeführt wird Bei der Reflektion fehlt die Eigenschaft. Das ist, weil der Typ nicht tatsächlich geändert wird, die Eigenschaft nur in dem Kontext der TypeDescriptor-Überprüfung hinzugefügt wird. –