property example dynamically create c# dynamic expandoobject

dynamically - expandoobject c# example



¿Por qué no puedo indexar en un ExpandoObject? (1)

cómo Expando fue capaz de ocultar el método de una de sus interfaces.

Debido a que, como descubrió correctamente en la documentación, el indizador es una implementación de interfaz explícita . Del tutorial explícito de implementación de interfaz :

Una clase que implementa una interfaz puede implementar explícitamente un miembro de esa interfaz. Cuando un miembro se implementa explícitamente, no se puede acceder a él a través de una instancia de clase, sino solo a través de una instancia de la interfaz.

Esto significa que tendrás que convertir la referencia a la interfaz para acceder a ella:

((IDictionary<String, Object>)expando)["name"]

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 lanza 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 consultado la documentación de ExpandoObject y se implementa explícitamente IDictionary<,> y, por lo tanto, tiene un método this.[index] ( MSDN ). ¿Por qué no puedo llamarlo?

Por supuesto, no hay nada que me ExpandoObject el ExpandoObject a un diccionario manualmente y luego ExpandoObject , 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?