2013-04-01 8 views
5

Mam obiekt, wystąpienie klasy Serializable. Zastanawiam się, w jaki sposób można uzyskać ten obiekt jako strumień bajtów?Serializuj obiekt w języku C# i pobierz strumień bajtów.

Wiem, że mogę użyć BinaryFormatter, a następnie użyć metody Serialize, ale ta metoda pobiera serializationStream, gdzie zapisuje obiekt serializowany. Chcę być w stanie napisać go w pliku/strumienia w określonej pozycji, więc chciałbym zrobić coś takiego:

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

Czy jest jakiś sposób mogę zrobić [*], podjęcie bajtów serializacji przedmiotu?

+3

Czy można go przekształcić do postaci szeregowej w MemoryStream? A następnie po prostu chwyć bufor strumienia. – itsme86

Odpowiedz

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

dzięki! Tego właśnie szukałem :) – insumity