求救 反序列化问题

hellman1984 2008-09-05 10:47:01
小弟想把一个字符串通过XmlSerializer做成一个xml列化的字符串。
然后把此字符串作为参数传递。
但是在反序列化的时候出现了一个问题。
我开始想使用MemoryStream来作为Deserialize的参数流。
可是始终提示错误。
代码如下:
strTest st1 = new strTest();
XmlSerializer mySerializer1 = new XmlSerializer(typeof(strTest));
byte[] firstString = uniEncoding.GetBytes(str.ToString());
MemoryStream stream = new MemoryStream();
stream.Write(firstString,0,firstString.Length);
st1 = (strTest) mySerializer1.Deserialize(stream);
其中 strTest 是复杂对象;str是要处理的字符串。

但是当我把要处理的字符串存在一个文件中。然后再由文件读出后处理就没有问题了。
在线求救高手指点在使用MemoryStream时的错误之处。
...全文
111 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wolf_life 2008-09-05
  • 打赏
  • 举报
回复
顶。。我以前的例子找不到了。。
序列和反序列有三种格式。。
hellman1984 2008-09-05
  • 打赏
  • 举报
回复
可能我在主贴中没有说明白。我最终的目的是要做成一个web service.调用的时候向web service中传递一个复杂结构。
我现在是在同一个程序中作的实验。但是用文本保存传递过来的字符串是没有任何问题。作为一个使用强度很高的web service的话,
我不想使用实体文本进行处理。所以才想使用MemoryStream的。
生财 2008-09-05
  • 打赏
  • 举报
回复
bformatter.Serialize(stream, Object);

stream.Close();

没有数据返回,再说,你那object 是干什么的,流不是已经有了吗
格拉 2008-09-05
  • 打赏
  • 举报
回复
学习帮顶
nattystyle 2008-09-05
  • 打赏
  • 举报
回复

public class Serializer
{
/// <summary>
/// 序列化
/// </summary>
/// <param name="Object"></param>
/// <param name="FileName"></param>
public static void Serialize(object Object, string FileName)
{
BinaryFormatter bformatter = new BinaryFormatter();

Stream stream = File.Open(FileName, FileMode.Create);

bformatter.Serialize(stream, Object);

stream.Close();
}
/// <summary>
/// 反序列化
/// </summary>
/// <param name="FileName"></param>
/// <returns><returns>
public static object Deserialize(string FileName)
{
BinaryFormatter bformatter = new BinaryFormatter();

Stream stream = File.Open(FileName, FileMode.Open);

object dObject = bformatter.Deserialize(stream);

stream.Close();

return dObject;
}
cnming 2008-09-05
  • 打赏
  • 举报
回复
系列化之后会有系列化时你的应用程序的公钥
请问反系列化时你的应用程序是同一个版本吗?如果不是的话,请用同一个版本试试看。

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧