Отражать на ExpandoObject - PullRequest
6 голосов
/ 09 июня 2010

Я написал изящную функцию, которая будет принимать system.object, отражать ее свойства и сериализовать объект в строку JSON. Это выглядит так:

public class JSONSerializer
{

    public string Serialize(object obj)

Теперь я хочу иметь возможность сделать это для сериализации динамического объекта / ExpandoObject, но поскольку мой сериализатор использует отражение, он не может этого сделать. Какой обходной путь?

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());
    }
}

Ответы [ 2 ]

2 голосов
/ 11 июня 2010

Думаю, этот вопрос очень похож: Как мне отразить над членами динамического объекта?

По крайней мере, ответы тоже должны вам помочь.

0 голосов
/ 08 декабря 2010

Я бы предложил использовать JSON.NET для сериализации. Версия 3.5 поддерживает сериализацию динамических объектов (например, expando). Десериализация из JSON в динамический объект требует небольших усилий, но это тоже не слишком громоздко. В приведенном ниже сообщении перечислено это:

Сериализация динамических объектов

...