C # Objekt binäre Serialisierung
Ich will ein binäres serialisieren eines Objekts und das Ergebnis speichern Sie in einer Datenbank.
Person person = new Person();
person.Name = "something";
MemoryStream memorystream = new MemoryStream();
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(memorystream, person);
Wie kann ich mich verwandeln memorystream in einen string-Typ werden in der Datenbank gespeichert, und nach dieser in der Lage sein zu Deserialisieren das Objekt?
InformationsquelleAutor der Frage Emanuel | 2009-11-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie wirklich fordert, ist eine sichere Art und Weise der Darstellung beliebiger Binär-Daten als text und wandelt dann wieder. Die Tatsache, dass es speichert ein serialisiertes Objekt ist, ist irrelevant.
Die Antwort ist fast mit Basis 64 (z.B.
Konvertieren.ToBase64String
undKonvertieren.FromBase64String
). Tun nicht VerwendungEncoding.UTF8.GetString
oder ähnliches - Ihre binäre Daten nicht codiert text-Daten, und sollte nicht als solche behandelt werden.Jedoch Ihre Datenbank nicht über einen Datentyp für binäre Daten? Überprüfen Sie für die BLOB -, BILD-und BINÄR-Typen...
InformationsquelleAutor der Antwort Jon Skeet
Hier ist die Probe. TData markiert werden muss [Serializable] und alle Felder Typ auch.
InformationsquelleAutor der Antwort Siarhei Kuchuk
InformationsquelleAutor der Antwort Ramakrishna Talla
Benutzte ich so etwas
InformationsquelleAutor der Antwort Adriaan Stander
Grundsätzlich nicht speichern Sie die Daten als string in die Datenbank, gibt es
blob
Felder zum speichern von binären Daten.Wenn Sie wirklich brauchen, um die Daten als string, müssen Sie konvertieren Sie Ihre byte[] einen string mit base64-encoding und packen das byte[] aus einer Zeichenfolge verwenden Decodierung.
InformationsquelleAutor der Antwort Jan Jongboom
Haben Sie nicht, sah in den Umbau des memorystream in ein base64hex string in der Datenbank?
Dann können Sie dump den Inhalt sConvertdHex der Datenbank. Deserialisieren zu können, müssen Sie es tun das Gegenteil
dann Deserialisieren mData zurück zu Ihrem Objekt.
InformationsquelleAutor der Antwort t0mm13b