Esiste una scorciatoia per serializzare binariamente ogni proprietà in un oggetto?
-
26-09-2019 - |
Domanda
Se c'è un oggetto in cui ogni bene pubblico deve essere serializzato e le proprietà sono semplici (solo numeri o stringhe o oggetti già implementati ISerializable
), esiste un modo semplice per farlo senza dover creare GetObjectData(SerializationInfo info, StreamingContext context)
e un costruttore che prende SerializationInfo
come argomento ogni volta?
So che può essere eseguito manualmente con la riflessione, ma esiste un metodo magico all'interno di .NET Framework per farlo?
Quindi la risposta corretta è:
Non provare a implementare ISerializable: è per la serializzazione personalizzata.Aggiungi invece l'attributo [Serializable] subito prima della dichiarazione della classe.
Soluzione
Prova la classe BinaryFormatter: dovrebbe fare ciò di cui hai bisogno
MODIFICARE:Non deriva da BinaryFormatter: è una classe di utilità che usi per eseguire la serializzazione.Ecco un esempio copiato dai documenti
MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();