c# 4.0 - net - C#4.0 Dynamic vs Expando... ¿dónde encajan?
expandoobject c# example (1)
Expando es un tipo dynamic
al que los miembros se pueden agregar (o eliminar) en tiempo de ejecución. dynamic
está diseñado para permitir que .NET interactúe con los tipos al interactuar con lenguajes dinámicos de tipado como Python y JavaScript.
Entonces, si necesita manejar un tipo dinámico: use dynamic
y si necesita manejar datos dinámicos como XML o JSON: use ExpandoObject
La declaración de un expando muestra la relación entre dynamic y expando:
dynamic expando = new ExpandoObject();
Y la capacidad de agregar una nueva propiedad:
expando.SomeNewStringVal = "Hello World!";
La última línea de código crea una nueva propiedad de cadena en el objeto SomeNewStringVal
llamado SomeNewStringVal
. El tipo de cadena se deduce de la asignación.
Entonces, un expando es un tipo de datos dinámico que puede representar datos dinámicamente cambiantes. Eso es todo en pocas palabras. Aquí hay una mirada más profunda a dynamic y expando .
Ejemplo completo:
using System;
using System.Dynamic;
class Program
{
static void Main(string[] args)
{
dynamic expando = new ExpandoObject();
expando.SomeNewStringVal = "Hello Brave New Whirrled!";
Console.WriteLine(expando.SomeNewStringVal);
// more expando coolness/weirdness:
var p = expando as IDictionary<String, object>;
p["A"] = "New val 1";
p["B"] = "New val 2";
Console.WriteLine(expando.A);
Console.WriteLine(expando.B);
}
}
Estoy tratando de aprender todos los nuevos obsequios que vienen con C # 4.0. No estoy logrando entender las diferencias entre los tipos DynamicObject
y ExpandoObject
. Parece que DynamicObject
se usa, por ejemplo, cuando se quiere acceder a variables de los scripts de Python y de ExpandoObject
cuando se habla con objetos COM / Office. ¿Estoy en lo cierto? ¿Cuál es la diferencia en su uso?