hBifTs

山自高兮水自深!當塵霧消散,唯事實留傳.荣辱不惊, 看庭前花开花落; 去留随意, 望天上云展云舒.

导航

序列化对象 :)

Posted on 2004-07-05 23:59  hbiftsaa  阅读(1578)  评论(5编辑  收藏  举报
有的情况下面,我们想要把这个程序中的一个对象的信息传到另一个程序中去.
这时,对于这个对象的处理,有两个选择,
1,把对象中要使用的字段的值读出来,以Byte的方式写到内存中.
2,对对象进行序列化.

一般情况下面,如果是我,我是选择第一个方法.原因比较简单,这个方法的速度比第二个方法的要快:)
但是,如果是这种情况下面,我们应该怎么办呢?
有两组对象,一个用于存储自定义的对象.一个是一个Hashtable,Key是前面自定义的对象,Value为其它的对象.
我想把这两组对象都传给别的程序,同时也要保持Hashtable中的Key/Value对:)

在这里,我使用了序列化,因为序列化的一个好处就是可以还原原始的HashCode,
即,序列化前的对象的GetHashCode()的返回值和序列化后还原的GetHashCode()的返回值是一样的:)

hoho..这样就好多了
    public class AppSerialize{
        
public static MemoryStream Serialize( object obj){
            BinaryFormatter formatter 
= new BinaryFormatter();
            MemoryStream ms 
= new MemoryStream();
            formatter.Serialize(ms,obj);
            
return ms;
        }


        
public static Stream Serialize(object obj,Stream stream){
            BinaryFormatter formatter 
= new BinaryFormatter();
            formatter.Serialize( stream,obj);
            
return stream;
        }


        
public static object Deserialize(Stream stream){
            BinaryFormatter formatter 
= new BinaryFormatter();
            
return formatter.Deserialize(stream);
        }

    }

通过这个方式,就可以方便的使用内存映射文件来交换对象了:)

下载: ObjSerialize.zip