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 récupérer plus tard?
c#
serialization
stream
Tono Nam
la source
la source
Réponses:
Vous pouvez utiliser les éléments suivants:
la source
string attributeXml = string.Empty;
dansDeSerializeObject
ne soit jamais utilisé;)Je viens d'écrire un article de blog sur l'enregistrement des données d'un objet en binaire, XML ou Json . Vous avez raison de dire que vous devez décorer vos classes avec l'attribut [Serializable], mais uniquement si vous utilisez la sérialisation binaire. Vous préférerez peut-être utiliser la sérialisation XML ou Json. Voici les fonctions pour le faire dans les différents formats. Voir mon article de blog pour plus de détails.
Binaire
XML
Nécessite que l'assembly System.Xml soit inclus dans votre projet.
Json
Vous devez inclure une référence à l'assembly Newtonsoft.Json, qui peut être obtenue à partir du package NuGet Json.NET .
Exemple
la source
Vous aurez besoin de sérialiser quelque chose: c'est-à-dire de choisir binaire ou xml (pour les sérialiseurs par défaut) ou d'écrire un code de sérialisation personnalisé pour sérialiser sous une autre forme de texte.
Une fois que vous avez choisi cela, votre sérialisation appellera (normalement) un Stream qui écrit dans une sorte de fichier.
Donc, avec votre code, si j'utilisais la sérialisation XML:
Ensuite, pour désérialiser:
REMARQUE: ce code n'a pas été compilé, encore moins exécuté - il peut y avoir des erreurs. En outre, cela suppose une sérialisation / désérialisation complètement prête à l'emploi. Si vous avez besoin d'un comportement personnalisé, vous devrez effectuer un travail supplémentaire.
la source
1. Restaurer l'objet à partir du fichier
À partir de là, vous pouvez désérialiser un objet d'un fichier de deux manières.
Solution-1: lire le fichier dans une chaîne et désérialiser JSON en un type
Solution-2: désérialiser JSON directement à partir d'un fichier
2. Enregistrer l'objet dans un fichier
à partir de là, vous pouvez sérialiser un objet dans un fichier de deux manières.
Solution-1: sérialiser JSON en une chaîne, puis écrire une chaîne dans un fichier
Solution-2: sérialiser JSON directement dans un fichier
3. Extra
Vous pouvez télécharger Newtonsoft.Json à partir de NuGet en suivant la commande
la source
**1. Convertissez la chaîne json en base64string et écrivez-la ou ajoutez-la au fichier binaire. 2. Lisez base64string à partir du fichier binaire et désérialisez à l'aide de BsonReader. **
la source
Vous pouvez utiliser JsonConvert de la bibliothèque Newtonsoft. Pour sérialiser un objet et écrire dans un fichier au format json:
Et pour le désérialiser en objet:
la source