Frage

In C # 4.0 werden wir dynamische Typen bekommen, oder Objekte, deren „statischen Typ ist dynamisch“, so Anders. Dies ermöglicht es jeder Methodenaufruf Auflösung zur Laufzeit geschehen, anstatt Zeit zu kompilieren. Aber wird es Möglichkeit, das dynamische Objekt zu irgendeiner Art von Vertrag zu binden (und damit auch die volle IntelliSense für ihn zurückzubekommen), anstatt jeden Anruf so dass auf sie, auch wenn Sie wissen, dass es unwahrscheinlich ist, um gültig sein.

d. 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 nicht so etwas in den bestehenden Materialien für C # 4.0 finden, aber es scheint wie eine logische Erweiterung des dynamischen Paradigmas. Jeder, der weitere Informationen?

War es hilfreich?

Lösung

Ich bin mir nicht bewusst, etwas wirklich Duck Typing ähnlich, ich habe Angst. Ich habe über die Idee gebloggt, aber ich erwarte keine Unterstützung. Es wäre wahrscheinlich nicht zu hart sein Reflection.Emit zu verwenden, um eine Klasse zu machen, die eine Implementierung einer bestimmten Schnittstelle generieren, ein dynamisches Objekt im Konstruktor zu nehmen und Proxying nur jeden Anruf durch zu. Nicht ideal, aber es könnte eine Notlösung sein.

Andere Tipps

Das ist eine coole Idee. Wenn ich Sie verstehen, Sie beschreiben / eine Fähigkeit des CLR vorschlägt, wobei, wenn Sie versuchen und werfen ein dynamisches Objekt an eine Schnittstelle, es an, welche Methoden / Eigenschaften der dynamischen Objektträger aussehen sollte und sehen, ob es diejenigen hat, die effektiv diese Schnittstelle implementieren. Dann würde die CLR kümmern ‚zur Durchführung IFoo‘ auf das Objekt, so können Sie werfen dann das dynamische Objekt zu einem IFoo. So gut wie sicher, dass das nicht unterstützt werden, aber es ist eine interessante Idee.

Tobias Hertkorn beantwortet meine Frage hier mit einem Link auf seine Blogpost ein Beispiel zeigt, wie auf das Metaobjekt Convert () Methode zu verwenden, um einen dynamischen Proxy zurückzukehren. Es sieht aus, sehr vielversprechend aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top