Nun, es müsste virtual
sein, um es zu überschreiben (indem ein dynamischer Typ geschrieben wird, der von der Klasse erbt), und Sie können kein private virtual
haben (es ergibt keinen Sinn). Sie könnten vielleicht ein internal virtual
überschreiben, aber ich vermute, dass auch dies Sicherheitsprobleme verursachen könnte. Letztendlich würde ich nein sagen.
Nicht mit Reflection alleine. Vielleicht ist das Beste, was Sie tun können, Reflection zu verwenden, kombiniert mit Reflection.Emit oder CodeDom , um die Klasse in einen neuen Namespace zu duplizieren. Wenn Sie auf die private Methode stoßen, die Sie ersetzen möchten, kopieren Sie sie nicht, Sie geben Ihre Ersetzung aus.
Es gibt jedoch viele Techniken, die ein Entwickler verwenden kann, die diese Technik viel, viel schwieriger machen. Das Brechen der Implementierung der Klasse in viele private oder interne Klassen ist eine solche.
Hinweis: Wenn Sie das CodeDom verwenden, müssen Sie das Diagramm im Speicher erstellen, kompilieren und dann die resultierende Baugruppe laden.
Dies ist wahrscheinlich viel mehr Ärger als es wert ist.
Der andere Weg wäre, Reflektor zu verwenden, um die Klasse zu zerlegen, den Code zu übernehmen und Erstelle deine eigene Klasse daraus mit der Methode replace. Auch hier sind erhebliche technische und rechtliche Hürden zu überwinden. Sie können jedoch viel vom disassemblierten Code lernen.
Typemock-Isolator soll dies tun können, tut dies aber durch die .NET-Profiler-APIs (laut Roy Osherove in Art of Unit Testing ).
Tags und Links .net c# reflection override