So rufen Sie eine Erweiterung Methode des dynamischen Typs?
Lese ich das Buch "C# in Depth, 2nd Edition' von Jon Skeet. Er sagte, dass wir anrufen können, extension-Methoden mit dynamischen Argumenten mit zwei workarounds, so wie
dynamic size = 5;
var numbers = Enumerable.Range(10, 10);
var error = numbers.Take(size);
var workaround1 = numbers.Take((int) size);
var workaround2 = Enumerable.Take(numbers, size);
Dann sagte er: "Beide Ansätze funktionieren wird, wenn Sie möchten, rufen Sie den extension-Methode mit den dynamischen Wert wie die implizite this
Wert". Ich weiß nicht, wie es zu erreichen.
Vielen Dank.
- Mann, jetzt ist das nicht einfach das ticket? Sie Lesen ein Buch von Jon Skeet, und bekommen eine Antwort von Jon Skeet, über etwas, Sie sind unklar.
- Brauchen wir eine jon-skeet-tag?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie diese:
In anderen Worten, nur nennen Sie es wie eine statische Methode statt als eine Erweiterung Methode.
Oder wenn kennen Sie eine angemessene Art argument Sie könnten nur wirken, was ich normalerweise tun, mit einer extra variable:
... aber wenn du den Umgang mit dynamischen Typen, können Sie auch nicht wissen, dass die Sequenz-element-Typ, in dem Fall der ersten version können die "execution time-compiler" figure it out, im Grunde.
Erweiterung Methode nur syntaktischer Zucker, Sie wird umgewandelt, wie eine normale Methode aufrufen, indem Sie c# - compiler. Diese Wandlung hängt mit der aktuellen syntax, Kontext (Die namespaces importiert using-Anweisung).
Dynamischen variable ist ein Prozess von-Laufzeit. diese Zeit, die CLR kann nicht genug bekommen, syntax, Kontext-Informationen, um zu entscheiden, welche Erweiterung Methode verwendet. So, es wird nicht funktionieren.