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;)

Antworten auf die Frage(4)

Ihre Antwort auf die Frage