2010-06-09 7 views
6

J'ai écrit une fonction astucieuse qui va accepter un system.object, réfléchir sur ses propriétés et sérialiser l'objet dans une chaîne JSON. Il ressemble à ceci:Réfléchir sur un ExpandoObject

public class JSONSerializer 
{ 

    public string Serialize(object obj) 

Maintenant, je veux être en mesure de le faire pour sérialiser une dynamique/ExpandoObject, mais parce que mon sérialiseur utilise la réflexion, il est capable de le faire. Quelle est la solution de contournement?

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

double possible de [? Comment puis-je réfléchis sur les membres de l'objet dynamique] (http://stackoverflow.com/questions/2634858/how-do-i- reflect-over-the-members-of-dynamic-object) – nawfal

Répondre

0

Je suggère d'utiliser JSON.NET pour sérialiser. La version 3.5 supporte la sérialisation des objets dynamiques (comme expando). La désérialisation de JSON à l'objet dynamique implique un peu d'efforts mais cela n'est pas trop lourd. Les listes de postes ci-dessous qui out:

Dynamic Object Serialization

Questions connexes