Löst der neue 'dynamische' Variablentyp in .NET 4.0 das Problem des Versendens einzelner / mehrerer Methoden in CLR?
Das Problem des einmaligen Versands ist vor allem denjenigen bekannt, die mit statisch typisierten Sprachen wie Java und C # codieren. Die Grundidee ist:
Während der Laufzeit-Polymorphismus es uns ermöglicht, den richtigen Methodenaufruf entsprechend dem Typ (Laufzeit-Typ) von @ zu sendereceiver
, zum Beispiel
IAnimal mything = new Cat();
mything.chop();
Der Methodenaufruf wird entsprechend dem Laufzeittyp von @ ausgeführmything
, nämlichCat
. Dies ist die Single-Dispatch-Funktion (die in Java / C # vorhanden ist).
Nun, wenn Sie nicht nur nach dem Laufzeit-Typ des Empfängers, sondern auch nach den Typen von (mehreren) Argumenten versenden müssen, haben Sie ein kleines Problem:
public class MyAcceptor {
public void accept (IVisitor vst) {...}
public void accept (EnhancedConcreteVisitor vst) {...}
}
Die zweite Methode wird nie aufgerufen, da wir in unserem 'Consumer'-Code dazu neigen, verschiedene Arten von Objekten (in meinem Beispiel Besucher) nach ihrem gemeinsamen Supertyp oder ihrer gemeinsamen Schnittstelle zu behandeln.
Deshalb frage ich - weil die dynamische Eingabe den Mehrfachversand-Polymorphismus erlaubt und C # 4.0 dieses dynamische Schlüsselwort hat;)