2010-06-09 6 views
6

Ho scritto una funzione elegante che accetterà uno system.object, rifletterà sulle sue proprietà e serializzerà l'oggetto in una stringa JSON. Ecco come si presenta:Riflettere su un ExpandoObject

public class JSONSerializer 
{ 

    public string Serialize(object obj) 

Ora, voglio essere in grado di fare questo per serializzare una dinamica/ExpandoObject, ma perché la mia serializzatore utilizza la riflessione, non è in grado di farlo. Qual è la soluzione?

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

possibile duplicato di [? Come faccio a riflettere sui membri di oggetto dinamico] (http://stackoverflow.com/questions/2634858/how-do-i- riflettere-over-the-membri-di-dinamico-oggetto) – nawfal

risposta

0

Vorrei suggerire di utilizzare JSON.NET per serializzare. La versione 3.5 supporta la serializzazione di oggetti dinamici (come expando). La deserializzazione da JSON all'oggetto dinamico richiede un piccolo sforzo, ma anche questo non è troppo macchinoso. Gli elenchi post qui sotto che fuori:

Dynamic Object Serialization