¿Por qué no puedo indexar en un ExpandoObject?
Algo me sorprendió al analizar la dinámica de C # hoy (nunca los he usado mucho, pero últimamente he estado experimentando con el marco web de Nancy). Descubrí que no podía hacer esto:
dynamic expando = new ExpandoObject();
expando.name = "John";
Console.WriteLine(expando["name"]);
La última línea arroja una excepción:
No se puede aplicar la indexación con [] a una expresión de tipo 'System.Dynamic.ExpandoObject'
Entiendo el mensaje de error, pero no entiendo por qué sucede esto. He mirado la documentación de ExpandoObject y se implementa explícitamenteIDictionary<,>
y por lo tanto tiene unthis.[index]
método (MSDN) ¿Por qué no puedo llamarlo?
Por supuesto, no hay nada que me impida abatir elExpandoObject
a un diccionario manualmente y luego indexarlo, pero eso desafía el punto; tampoco explica cómo Expando pudo ocultar el método de una de sus interfaces.
¿Que está pasando aqui?