有的情况下面,我们想要把这个程序中的一个对象的信息传到另一个程序中去.
这时,对于这个对象的处理,有两个选择,
1,把对象中要使用的字段的值读出来,以Byte的方式写到内存中.
2,对对象进行序列化.
一般情况下面,如果是我,我是选择第一个方法.原因比较简单,这个方法的速度比第二个方法的要快:)
但是,如果是这种情况下面,我们应该怎么办呢?
有两组对象,一个用于存储自定义的对象.一个是一个Hashtable,Key是前面自定义的对象,Value为其它的对象.
我想把这两组对象都传给别的程序,同时也要保持Hashtable中的Key/Value对:)
在这里,我使用了序列化,因为序列化的一个好处就是可以还原原始的HashCode,
即,序列化前的对象的GetHashCode()的返回值和序列化后还原的GetHashCode()的返回值是一样的:)
hoho..这样就好多了
通过这个方式,就可以方便的使用内存映射文件来交换对象了:)
下载: ObjSerialize.zip
这时,对于这个对象的处理,有两个选择,
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);
}
}
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