【发布时间】:2012-05-10 13:07:03
【问题描述】:
我在使用内存流进行序列化时遇到问题。这是我的代码:
/// <summary>
/// serializes the given object into memory stream
/// </summary>
/// <param name="objectType">the object to be serialized</param>
/// <returns>The serialized object as memory stream</returns>
public static MemoryStream SerializeToStream(object objectType)
{
MemoryStream stream = new MemoryStream();
IFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, objectType);
return stream;
}
/// <summary>
/// deserializes as an object
/// </summary>
/// <param name="stream">the stream to deserialize</param>
/// <returns>the deserialized object</returns>
public static object DeserializeFromStream(MemoryStream stream)
{
IFormatter formatter = new BinaryFormatter();
stream.Seek(0, SeekOrigin.Begin);
object objectType = formatter.Deserialize(stream);
return objectType;
}
我得到的错误如下: 流不是有效的二进制格式。起始内容(以字节为单位)是:blah....
我不确定是什么导致了错误。任何帮助将不胜感激。
调用示例:
Dog myDog = new Dog();
myDog.Name= "Foo";
myDog.Color = DogColor.Brown;
MemoryStream stream = SerializeToStream(myDog)
Dog newDog = (Dog)DeserializeFromStream(stream);
【问题讨论】:
-
提供您用来调用方法的代码。
-
你能告诉我们你是如何使用这个代码的吗?怀疑这个参数命名为objectType
-
执行您的代码示例没有任何问题。你还有其他处理流对象的部分吗?
-
这里一样,代码有效。你能展示你的 Dog 课程吗?那 DogColor 类型是什么?
标签: c# serialization deserialization memorystream