Сериализация и десериализация (C #) - PullRequest
2 голосов
/ 18 декабря 2011

Как можно десериализовать один класс в другой класс следующим образом:

var ser = SerializedObject(b);// read from Database!

var des = DeSerializeAnObject(ser, typeof(BaseClass));

BaseClass baseclass = (BaseClass)des;

baseclass.Hello();

Ответы [ 2 ]

1 голос
/ 18 декабря 2011

Вы уверены, что это действительно сериализация / десериализация?Мне кажется, что вам нужен код для сопоставления (т.е. копирования выделенных или всех свойств) одного объекта другому.

Ознакомьтесь с Руководством по началу работы с AutoMapper .

Следуя вашему примеру, вы можете сделать что-то вроде этого

BaseClass baseClass = Mapper.Map<OtherClass, BaseClass>(b);

Я также несколько запутался с вашим выбором имен классов в вашем примере.Если «BaseClass» действительно является базовым классом OtherClass, то вместо этого вы просто выполняете приведение, но я собираюсь догадаться, что это не так.

0 голосов
/ 18 декабря 2011

образец десериализации подобен ...

    public BaseClass DeSerializeAnObject(BaseClass bc)
    {
        if (bc == null) return bc;

        IFormatter formatter = new BinaryFormatter();
        using (Stream stream = new MemoryStream())
        {
            formatter.Serialize(stream, bc);
            stream.Seek(0, SeekOrigin.Begin);
            return (BaseClass)formatter.Deserialize(stream);
        }
    }
...