Warum kann ich kein ExpandoObject indizieren?
Etwas überraschte mich, als ich mich heute mit C # -Dynamik beschäftigte (ich habe sie nie viel benutzt, aber in letzter Zeit habe ich mit dem Nancy-Webframework experimentiert). Ich habe festgestellt, dass ich das nicht tun kann:
dynamic expando = new ExpandoObject();
expando.name = "John";
Console.WriteLine(expando["name"]);
Die letzte Zeile löst eine Ausnahme aus:
Kann keine Indizierung mit [] auf einen Ausdruck vom Typ 'System.Dynamic.ExpandoObject' anwenden
Ich verstehe die Fehlermeldung, aber ich verstehe nicht, warum dies geschieht. Ich habe mir die Dokumentation für ExpandoObject angesehen und es implementiert explizitIDictionary<,>
und hat somit einthis.[index]
Methode MSDN). Warum kann ich es nicht anrufen?
Natürlich gibt es nichts, was mich davon abhält, das @ niederzuschlageExpandoObject
zu einem Wörterbuch manuell und dann indizieren, aber diese Art von trotzt dem Punkt; es erklärt auch nicht, wie der Expando die Methode einer seiner Schnittstellen verbergen konnte.
Was ist denn hier los