Ich habe eine Klasse, die in einer Client-Anwendung und in einer Server-Anwendung verwendet wird. In der Serveranwendung füge ich der Klasse einige Funktionen durch Erweiterungsmethoden hinzu. Funktioniert super. Jetzt möchte ich ein bisschen mehr:Virtuelle Erweiterungsmethoden?
Meine Klasse (B) erbt von einer anderen Klasse (A).
Ich möchte eine virtuelle Funktion an A (sagen wir Execute()), und implementieren Sie dann diese Funktion in B. Aber nur auf dem Server. Die Execute() -Methode müsste Dinge tun, die nur auf dem Server möglich sind, wobei Typen verwendet werden, die nur der Server kennt.
Es gibt viele Typen, die genau wie B von A erben, und ich möchte Execute() für jede von ihnen implementieren.
Ich hatte gehofft, ich könnte eine virtuelle Erweiterungsmethode zu A hinzufügen, aber diese Idee scheint nicht zu fliegen. Ich suche den elegantesten Weg, um dieses Problem zu lösen, mit oder ohne Erweiterungsmethoden.
Dank Marc. Ich werde so etwas umsetzen. Es ist etwas komplizierter für mich, wenn ich diese Klassen serialisiere und sie über den Draht vom Server zum Client und zurück sende. Daher ist die traditionelle DI vielleicht etwas knifflig, aber ich denke, ich kann ein serverseitiges Äquivalent der Klasse B implementieren (wahrscheinlich von B erben), und wenn der Client dem Server eine Instanz von B schickt, muss ich sie durch eine ersetzen neue Instanz von ServerB. – Lucas
Der Registrierungsansatz funktioniert mit Serialisierung in Ordnung. Ich benutze diesen Ansatz, um die gemeinsame Nutzung von Baugruppen mit WCF-Objekten zu tun ... –