Estoy tratando de aprender todos los nuevos objetos que vienen con C# 4.0. No entiendo las diferencias entre los tipos DynamicObject
y ExpandoObject
. Parece que DynamicObject
se usa, p. cuando desee acceder a las variables desde los scripts de Python y al ExpandoObject
cuando hable con objetos COM/Office. ¿Estoy en lo cierto? ¿Cuál es la diferencia en su uso?C# 4.0 Dinámico vs Expando ... ¿dónde encajan?
Respuesta
Expando es un tipodynamic
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.
lo tanto, si usted necesita para manejar un tipo dinámico: utilizar dynamic
y si usted necesita para manejar datos dinámicos tales como XML o JSON: utilizar ExpandoObject
La declaración de un expando muestra la relación entre la dinámica y la expando :
dynamic expando = new ExpandoObject();
Y la posibilidad de añadir una nueva propiedad:
expando.SomeNewStringVal = "Hello World!";
Esa última línea de código crea una nueva cadena de pro perty en el objeto expando 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 que cambian dinámicamente. Eso es todo en pocas palabras. Here's a deeper look at dynamic and 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);
}
}
A pesar de que lo ha aceptado, yo Creo que el OP significaba diferencia entre DynamicObject y ExpandoObject. – nawfal
Solo para tener en cuenta que esto es útil en el tiempo en el mundo real. Acabo de utilizarlo API para crear objetos de respuesta dyanmic antes de serializar a xml o json. De esta forma, puedo agregar recursivamente subclases con distintos nombres de propiedad sin tener que definir una tonelada de propiedades explícitas. "GroupsL1": [{"GroupingL2 :: [{... – user2326106
[' DynamicObject'] (https://docs.microsoft.com/en-us/dotnet/api/system.dynamic.dynamicobject?view=netframework- 4.7) se dejó sin tratar. MSDN: * Proporciona una clase base para especificar el comportamiento dinámico en tiempo de ejecución. Esta clase debe heredarse; no se puede crear una instancia directamente. * La página MSDN contiene una implementación simplificada de 'ExpandoObject' basada en' DynamicObject' Por lo tanto, ambos tipos se usan con enlace tardío, pero 'ExpandoObject' es concreto (y sellado), mientras que' DynamicObject' es solo una clase base para objetos dinámicos personalizados. – Palec
- 1. Dificultades en el método en C# 4.0: dinámico vs RealProxy
- 2. C# 4.0 'dinámico' y sentencia foreach
- 3. dinámico vs var
- 4. Las aplicaciones más comunes del tipo dinámico C# 4.0
- 5. C# 4.0 rendimiento dinámico de interoperabilidad de Office
- 6. C# 4.0 'dinámico' no establece argumentos de ref/out
- 7. jQuery expando properties
- 8. Javascript expando objects
- 9. Vinculación: estático vs dinámico
- 10. XCode GCC-4.0 vs 4.2
- 11. ASP.NET MVC vs. ASP.NET 4.0
- 12. ¿Cuál es la diferencia entre el encuadernado dinámico Vs el tipado dinámico en el Objetivo C
- 13. Dinámico vs Typed produce resultados extraños
- 14. RDLC vs Crystal Reports vs Anything Else Gratis: estoy ejecutando Informix y utilizando C# 4.0
- 15. ¿Cómo encajan los repositorios con CQRS?
- 16. C# 4.0, ¿Métodos sobre la marcha?
- 17. C# 4.0 - ¿Llamar a un método protegido en un objeto dinámico llama a TryInvokeMember()?
- 18. ¿Cómo invocar el método estático en C# 4.0 con el tipo dinámico?
- 19. ¿Cómo iterar sobre una matriz de tipo dinámico en C# 4.0?
- 20. Extensión LINQ SelectMany en 3.5 vs 4.0?
- 21. .net2.0 vs .net 4.0 gdi + diferencia?
- 22. .net 4.0 Task Parallel Library vs. MPI.NET
- 23. Linq2SQL vs EF en .net Framework 4.0
- 24. JavaScript: ¿Qué es la propiedad Expando?
- 25. Mixins con C# 4.0
- 26. Operador con C# dinámico?
- 27. C# indexador dinámico
- 28. C# LINQ Dónde (expresión) .FirstorDefault() vs .FirstOrDefault (expresión)
- 29. ¿Dónde está GACUTIL para .NET Framework 4.0 en Windows 7?
- 30. ¿Dónde entró el servicio web ASP.NET en .Net Framework 4.0?
mejores respuestas aquí: http://stackoverflow.com/questions/3565481/differences-between-expandoobject-dynamicobject-and-dynamic –