In C# 4.0 werden wir laut Anders verschiedene dynamische Typen oder Objekte erhalten, deren "statischer Typ dynamisch ist". Auf diese Weise kann die Auflösung aller Methodenaufrufe zur Laufzeit statt zur Kompilierzeit erfolgen. Aber wird es eine Möglichkeit geben, das dynamische Objekt an irgendeine Art von Vertrag zu binden (und damit auch volle Intelligenz dafür zu bekommen), anstatt irgendeinen Anruf darauf zu erlauben, selbst wenn Sie wissen, dass es wahrscheinlich nicht gültig ist.Haben dynamische C# 4.0-Objekte eine Möglichkeit zur Eingabe von Enten?
I.e. statt nur
dynamic foo = GetSomeDynamicObject();
haben die Fähigkeit, es zu werfen oder zu transformieren sie in einen bekannten Vertrag zu beschränken, wie
IFoo foo2 = foo.To<IFoo>;
oder auch nur
IFoo foo2 = foo as IFoo;
Kann nichts finden wie das in den vorhandenen Materialien für C# 4.0, aber es scheint wie eine logische Erweiterung des dynamischen Paradigmas. Jeder mit mehr Informationen?
Es geht weniger um die Implementierung von IFoo, da es immer noch ein dynamisches Objekt wäre, dh der Aufruf würde zur Laufzeit noch passieren, aber Sie könnten ihn jetzt als IFoo weitergeben, weil Sie dem Compiler gesagt haben, dass sich Ihr dynamisches Objekt wie ein IFoo –
Ja, aber wenn Sie möchten, dass ein IFoo zur Hand ist, müsste jemand eine Passthrough-IFoo-Implementierung mit dem dynamischen Objekt erstellen. Darüber spricht Jon Skeet. – mackenir
Sie können dies heute ganz einfach implementieren, wenn Sie das Shim in Python oder Ruby schreiben möchten. –