第一次玩C#中的序列化…任何帮助将不胜感激!
以下是我的通用序列化器和反序列化器:
以下是我的通用序列化器和反序列化器:
public static string SerializeObject<T>(T objectToSerialize) { BinaryFormatter bf = new BinaryFormatter(); MemoryStream memStr = new MemoryStream(); try { bf.Serialize(memStr,objectToSerialize); memStr.Position = 0; return Convert.ToBase64String(memStr.ToArray()); } finally { memStr.Close(); } } public static T DeserializeObject<T>(string str) { BinaryFormatter bf = new BinaryFormatter(); byte[] b = System.Text.Encoding.UTF8.GetBytes(str); MemoryStream ms = new MemoryStream(b); try { return (T)bf.Deserialize(ms); } finally { ms.Close(); } }
这是我尝试序列化的对象:
[Serializable()] class MatrixSerializable : ISerializable { private bool markerFound; private Matrix matrix; public MatrixSerializable( Matrix m,bool b) { matrix = m; markerFound = b; } public MatrixSerializable(SerializationInfo info,StreamingContext ctxt) { markerFound = (bool)info.GetValue("markerFound",typeof(bool)); matrix = Matrix.Identity; if (markerFound) { //deserialization code } } public void GetobjectData(SerializationInfo info,StreamingContext ctxt) { // serialization code } public Matrix Matrix { get { return matrix; } set { matrix = value; } } public bool MarkerFound { get { return markerFound; } set { markerFound = value; } } }
以及如何运行它的示例:
MatrixSerializable ms = new MatrixSerializable(Matrix.Identity * 5,true); string s = Serializer.SerializeObject<MatrixSerializable>(ms); Console.WriteLine("serialized: " + s); ms = Serializer.DeserializeObject<MatrixSerializable>(s); Console.WriteLine("deserialized: " + ms.Matrix + " " + ms.MarkerFound);
当我尝试运行它时,我得到一个错误“SerializationException未处理:输入流不是有效的二进制格式.起始内容(以字节为单位)是:41-41-45-41-41-41-44-2F- 2F-2F-2F-2F-41-51-41-41-41 ……“
关于我做错了什么或如何解决这个问题的任何建议将不胜感激!
解决方法
原文地址:https://www.jb51.cc/csharp/100288.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。