序列化和反序列化(C#)

时间:2011-12-18 11:18:22

标签: c# serialization deserialization

如何将一个类反序列化为另一个类:

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

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

BaseClass baseclass = (BaseClass)des;

baseclass.Hello();

2 个答案:

答案 0 :(得分:1)

你确定它真的是你经过的序列化/反序列化吗?听起来像你正在寻找的代码是将一个对象映射(即复制选定的或所有属性)到另一个对象的代码。

查看AutoMapper Getting Started Guide

跟随你的例子你可以做这样的事情

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

我也对你在例子中选择的类名感到困惑。如果“BaseClass”确实是OtherClass的基类,那么你只需要进行一次转换,但我猜不会是这种情况。

答案 1 :(得分:-1)

反序列化样本就像......

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