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

本文关键字:反序列化 序列化 | 更新日期: 2023-09-27 18:18:06

如何像这样将一个类反序列化到另一个类:

var ser = SerializedObject(b);// read from Database!
var des = DeSerializeAnObject(ser, typeof(BaseClass));
BaseClass baseclass = (BaseClass)des;
baseclass.Hello();

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

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

看一下AutoMapper入门指南

按照你的例子,你可以这样做

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

我对你在例子中选择的类名也有些困惑。如果"BaseClass"确实是OtherClass的基类那么你只需要进行强制类型转换但我猜不是这样的

一个反序列化的样本就像…

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