2011-12-18 110 views
2

如何反序列化一个类,这样其他类:序列化和反序列化(C#)

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

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

BaseClass baseclass = (BaseClass)des; 

baseclass.Hello(); 

回答

1

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

看看AutoMapper Getting Started Guide

在你的榜样下,你可以做这样的事情

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

我也与你在你的榜样选择的类名有些困惑。如果“BaseClass”真的是OtherClass的基类,那么你只需要做一个演员,但我会猜测事实并非如此。

+0

想我没有其他类,(仅序列化类是在数据库中)。我想从序列化对象执行Hello()。请问,我的英文不好。 – 2011-12-18 12:09:30

+0

@AhmadAhmadi您的意思是说其他一些进程/系统是否将您未知的类型的对象序列化到数据库中,并且您希望对它们进行反序列化? – 2011-12-18 12:13:27

+0

是的,我必须反序列化它们并执行方法。 – 2011-12-18 12:15:37

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