2010-06-09 14 views
6

He escrito una función ingeniosa que aceptará un system.object, reflexionar sobre sus propiedades y serializar el objeto en una cadena JSON. Se ve así:Reflexionar sobre un ExpandoObject

public class JSONSerializer 
{ 

    public string Serialize(object obj) 

Ahora, quiero ser capaz de hacer esto para serializar una dinámica/ExpandoObject, sino porque mi serializador utiliza la reflexión, no es capaz de hacerlo. ¿Cuál es la solución?

public class Test 
{ 
    public dynamic MakeDynamicCat() 
    { 
     dynamic newCat = new ExpandoObject(); 
     newCat.Name = "Polly"; 
     newCat.Pedigree = new ExpandoObject(); 
     newCat.Pedigree.Breed = "Whatever"; 

     return newCat; 
    } 

    public void SerializeCat() 
    { 
     new JSONSerializer().Serialize(MakeDynamicCat()); 
    } 
} 
+0

posible duplicado de [? ¿Cómo reflexionar sobre los miembros de objeto dinámico] (http://stackoverflow.com/questions/2634858/how-do-i- reflect-over-the-members-of-dynamic-object) – nawfal

Respuesta

0

Sugeriría usar JSON.NET para serializar. La versión 3.5 admite la serialización de objetos dinámicos (como expando). La deserialización de JSON a objeto dinámico implica un pequeño esfuerzo, pero eso tampoco es demasiado engorroso. Los post lista de abajo de eso:

Dynamic Object Serialization

Cuestiones relacionadas