La sérialisation/désérialisation avec des flux de mémoire

Je vais avoir un problème avec la sérialisation à l'aide de flux de mémoire. Voici mon code:

///<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'erreur que j'obtiens est comme suit:
stream n'est pas valide d'un format binaire. Le départ de contenu (en octets) sont: blablabla....

Je ne suis pas exactement sûr de ce qui est à l'origine de l'erreur. Toute aide serait grandement appréciée.

Exemple de l'appel:

Dog myDog = new Dog();
myDog.Name= "Foo";
myDog.Color = DogColor.Brown;

MemoryStream stream = SerializeToStream(myDog)

Dog newDog = (Dog)DeserializeFromStream(stream);
  • Fournir le code que vous utilisez pour appeler vos méthodes.
  • pouvez-vous nous montrer comment vous en utilisant ce code ? Il est suspect que ce paramètre est appelé objectType
  • Je n'ai pas de problème par l'exécution de votre exemple de codes. Avez-vous d'autre part que le fait de traiter avec le courant de l'objet ?
  • Même ici, le code fonctionne. Pouvez-vous montrer à votre Chien de la classe ? Qu'est ce que DogColor type ?
InformationsquelleAutor gng | 2012-04-30