Tôi đang gặp sự cố với việc tuần tự hóa bằng cách sử dụng luồng bộ nhớ. Đây là mã của tôi:Serializing/deserializing với luồng bộ nhớ
/// <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;
}
Lỗi tôi nhận được như sau: luồng không phải là định dạng nhị phân hợp lệ. Nội dung bắt đầu (tính theo byte) là: blah ....
Tôi không chắc chắn nguyên nhân gây ra lỗi. Mọi sự trợ giúp sẽ rất được trân trọng.
Ví dụ về các cuộc gọi:
Dog myDog = new Dog();
myDog.Name= "Foo";
myDog.Color = DogColor.Brown;
MemoryStream stream = SerializeToStream(myDog)
Dog newDog = (Dog)DeserializeFromStream(stream);
Cung cấp mã bạn đang sử dụng để gọi phương thức của mình. – Fernando
bạn có thể chỉ cho chúng tôi cách bạn sử dụng mã này không? Thật đáng ngờ rằng tham số này được đặt tên objectType –
Tôi không gặp bất kỳ vấn đề nào khi thực thi ví dụ về mã của bạn. Bạn có phần khác xử lý đối tượng luồng không? – Turbot