101 votes

Comment sauvegarder/restaurer un objet sérialisable vers/depuis un fichier ?

J'ai une liste d'objets et je dois l'enregistrer quelque part dans mon ordinateur. J'ai lu quelques forums et je sais que l'objet doit être Serializable . Mais ce serait bien si je pouvais avoir un exemple. Par exemple, si j'ai ce qui suit :

[Serializable]
public class SomeClass
{
     public string someProperty { get; set; }
}

SomeClass object1 = new SomeClass { someProperty = "someString" };

Mais comment puis-je stocker object1 quelque part dans mon ordinateur et de le récupérer plus tard ?

3 votes

Voici un tutoriel qui montre comment sérialiser vers un fichier switchonthecode.com/tutoriel/

1voto

guest Points 31

**1. Convertir la chaîne json en chaîne base64 et l'écrire ou l'ajouter à un fichier binaire. 2. Lire la chaîne base64 du fichier binaire et la désérialiser en utilisant BsonReader. **

 public static class BinaryJson
{
    public static string SerializeToBase64String(this object obj)
    {
        JsonSerializer jsonSerializer = new JsonSerializer();
        MemoryStream objBsonMemoryStream = new MemoryStream();
        using (BsonWriter bsonWriterObject = new BsonWriter(objBsonMemoryStream))
        {
            jsonSerializer.Serialize(bsonWriterObject, obj);
            return Convert.ToBase64String(objBsonMemoryStream.ToArray());
        }           
        //return Encoding.ASCII.GetString(objBsonMemoryStream.ToArray());
    }
    public static T DeserializeToObject<T>(this string base64String)
    {
        byte[] data = Convert.FromBase64String(base64String);
        MemoryStream ms = new MemoryStream(data);
        using (BsonReader reader = new BsonReader(ms))
        {
            JsonSerializer serializer = new JsonSerializer();
            return serializer.Deserialize<T>(reader);
        }
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X