2011-12-18 157 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); 
     } 
    }