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

序列化和反序列化(C#),c#,serialization,deserialization,C#,Serialization,Deserialization,如何将一个类反序列化为另一个类,如下所示: var ser = SerializedObject(b);// read from Database! var des = DeSerializeAnObject(ser, typeof(BaseClass)); BaseClass baseclass = (BaseClass)des; baseclass.Hello(); 你确定你要的是真正的序列化/反序列化吗?在我看来,您需要的是将一个对象映射到另一个对象的代码(即复制选定的或所有属性)

如何将一个类反序列化为另一个类,如下所示:

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

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

BaseClass baseclass = (BaseClass)des;

baseclass.Hello();

你确定你要的是真正的序列化/反序列化吗?在我看来,您需要的是将一个对象映射到另一个对象的代码(即复制选定的或所有属性)

看一看这张照片

在下面的例子中,您可以这样做

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

我还对您在示例中选择的类名感到有些困惑。如果“BaseClass”真的是OtherClass的基类,那么您只需执行强制转换,但我猜情况并非如此。

您确定您所追求的是真正的序列化/反序列化吗?在我看来,您需要的是将一个对象映射到另一个对象的代码(即复制选定的或所有属性)

看一看这张照片

在下面的例子中,您可以这样做

BaseClass baseClass = Mapper.Map<OtherClass, BaseClass>(b);
BaseClass-BaseClass=Mapper.Map(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);
        }
    }

反序列化示例类似于

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

假设我并没有其他类(数据库中只有序列化的类)。我想从序列化对象执行Hello()。对不起,我的英语不好。@AhmadAhmadi你的意思是其他进程/系统正在将你不知道的类型的对象序列化到数据库中,你想反序列化它们吗?是的,我必须反序列化它们并执行方法。@AhmadAhmadi那么恐怕你运气不好。序列化将只保留序列化实例的实例字段,而不是方法体。数据库中的数据根本不包含足够的信息。您需要(在运行时)访问类定义才能将数据反序列化为任何有用的内容。假设我没有其他类(数据库中只有序列化的类)。我想从序列化对象执行Hello()。对不起,我的英语不好。@AhmadAhmadi你的意思是其他进程/系统正在将你不知道的类型的对象序列化到数据库中,你想反序列化它们吗?是的,我必须反序列化它们并执行方法。@AhmadAhmadi那么恐怕你运气不好。序列化将只保留序列化实例的实例字段,而不是方法体。数据库中的数据根本不包含足够的信息。您需要(在运行时)访问类定义,才能将数据反序列化为任何有用的内容。