Gibt es eine Möglichkeit, eine Methode mit der Reflexion zu "überschreiben"?
-
13-12-2019 - |
Frage
ohne erben, aber nur mit reflexion ist es möglich, den Code eines Verfahrens in c #?
dynamisch zu ändernso etwas wie:
generasacodicetagpre.ich kann die foo-Klasse nicht ändern / bearbeiten.
generasacodicetagpre.Mein letzter Ziel ist es, dynamik den Code von:
zu ändern generasacodicetagpre.in system.xml.xsl.runtime.xslconvert.cs
um zu drehen:
generasacodicetagpre.in:
generasacodicetagpre.Lösung
Der erste Teil dieser Antwort ist falsch, ich verlasse es nur, so dass die Evolution in den Kommentaren Sinn macht. Bitte sehen Sie sich die Bearbeitung (en).
Sie suchen nicht nach Reflexion, sondern Emission (was umgekehrt ist).
Insbesondere gibt es eine Methode, die genau das macht, was Sie wollen, Glück Sie!
siehe typebuilder.definemethodoverride
edit:
Ich schreibe diese Antwort, ich habe mich gerade daran erinnert, dass neu mischen kann dies auch tun. Es ist viel schwieriger.
re-mix ist ein Framework, das Mixins in C # simuliert. In seinem grundlegenden Aspekt können Sie es als Schnittstellen mit Standardimplementierungen vorstellen. Wenn Sie weiter gehen, wird es viel mehr als das.
edit 2: Hier ist ein Beispiel für die Wiederherstellung (Implementierung inotifyPropertyChanged auf einer Klasse, die es nicht unterstützt, und hat keine Ahnung von Mixins).
generasacodicetagpre.und der Test:
generasacodicetagpre.Bitte beachten Sie das:
generasacodicetagpre.und
generasacodicetagpre.und
generasacodicetagpre.den gleichen Effekt haben. Wenn Sie feststellen möchten, dass ein bestimmtes Mixin auf eine bestimmte Klasse angewendet wird.
Dieses Beispiel ist meine Implementierung des praktischen Labors, das mit RE-Mix gegeben ist. Weitere Informationen finden Sie dort.