2013-04-01 4 views
5

Ho un oggetto, istanza di una classe Serializable. Mi stavo chiedendo come si può ottenere questo oggetto come un flusso di byte?Serializzare un oggetto in C# e ottenere il flusso di byte

So che posso usare BinaryFormatter e quindi utilizzare il metodo Serialize, ma questo metodo prende uno serializationStream dove scrive l'oggetto serializzato. Voglio essere in grado di scrivere in un file/flusso in una posizione specifica così mi piacerebbe fare qualcosa di simile:

obj = new Something(); // obj is serializable 
byte[] serialized = obj.serialize(); [*] 
file.write(position, serialized) 

C'è un modo che io possa fare il [*], a prendere i byte della serializzazione di un oggetto?

+3

È possibile serializzare su un MemoryStream invece? E poi prendi il buffer del flusso. – itsme86

risposta

12
MemoryStream m = new MemoryStream(); 
var formatter = new BinaryFormatter(); 
formatter.Serialize(m, new MyClass() {Name="SO"}); 
byte[] buf = m.ToArray(); //or File.WriteAllBytes(filename, m.ToArray()) 


[Serializable] 
public class MyClass 
{ 
    public string Name; 
} 
+1

grazie! Questo quello che stavo cercando :) – insumity

Problemi correlati