序列化和反序列化(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那么恐怕你运气不好。序列化将只保留序列化实例的实例字段,而不是方法体。数据库中的数据根本不包含足够的信息。您需要(在运行时)访问类定义,才能将数据反序列化为任何有用的内容。