.net序列化与反序列化问题!帮帮忙困扰很久了!
我在wince上用CompactFormatter序列化一个对象,写入到网络工作流当中,传输到服务端(pc),接受到数据后用CompactFormatter再将将byte[]反序列化,但是总是不成功(数据已取到),类中的数据取不到提示未实例化异常!不知道问题出在哪里,求各位帮帮忙……这是客户端(pc)的反序列化代码
/// <summary>
/// 将byte[]反序列化
/// </summary>
/// <param name="ba">要被反序列化的对象</param>
/// <returns>序列化后的byte[]</returns>
public static object ByteAToObject(byte[] ba)
{
MemoryStream ms = null;
object obj = null;
try
{
// 反序列化
ms = new MemoryStream(ba);
CompactFormatter.CompactFormatter ser = new CompactFormatter.CompactFormatter();
obj = ser.Deserialize(ms);
}
catch (Exception e)
{
MessageBox.Show(e.ToString(), "错误");
}
finally
{
ms.Close();
}
return obj;
}
这是客户端(wince5.0)的序列化代码:
/// <summary>
/// 将结构对象序列化
/// </summary>
/// <param name="obj">要转换成Byte[]的对象</param>
/// <returns>转换后的Byte[]</returns>
public static byte[] ObjectToByteA(IDCARD_READ obj)
{
using (System.IO.MemoryStream ms = new System.IO.MemoryStream())
{
try
{
CompactFormatter.CompactFormatter ser = new CompactFormatter.CompactFormatter();
ser.Serialize(ms, obj);
byte[] buffer = ms.ToArray();
return buffer;
}
catch (Exception e)
{
MessageBox.Show(e.ToString(), "错误");
}
finally
{
ms.Close();
}
return null;
}
}
请各位帮我出出主意,看问题出在哪啊? 先谢过了! --------------------编程问答-------------------- 异常信息要给全
一般序列化的问题都是程序集不一致造成的。.Net CF和普通.Net Framework之间直接序列化和反序列化应该是不行的,用Xml序列化试试吧,或者自己实现对象和字节的转化。 --------------------编程问答-------------------- 在反序列化之前加入代码
ms.Position = 0; --------------------编程问答-------------------- 哪位兄弟,有序列化與反序列化方面的基礎教程啊! --------------------编程问答-------------------- 你去学一下XML文件的读写,这个学好了,序列化与反序列化也就学会了。
补充:.NET技术 , .NET Framework