2013-04-01 7 views
5

J'ai un objet, instance d'une classe Serializable. Je me demandais comment pouvez-vous obtenir cet objet comme un flux d'octets?Sérialiser un objet en C# et obtenir un flux d'octets

Je sais que je peux utiliser BinaryFormatter, puis utiliser la méthode Serialize, mais cette méthode prend un serializationStream où il écrit l'objet sérialisé. Je veux être en mesure d'écrire dans un fichier/flux dans une position spécifique, donc je voudrais faire quelque chose comme:

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

Est-il possible que je peux faire la [*], de prendre les octets de la sérialisation d'un objet?

+3

Pourriez-vous sérialisation à un MemoryStream à la place? Et puis il suffit de saisir le tampon de flux. – itsme86

Répondre

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

merci! Ce que je cherchais :) – insumity

Questions connexes