2013-04-01 7 views
5

Serializable sınıfının bir örneğim var. Bu nesneyi bayt akışı olarak nasıl edinebileceğinizi merak ediyordum?C# içinde bir nesneyi seri hale getirin ve bayt akışını alın

BinaryFormatter'u kullanabileceğimi ve Serialize yöntemini kullanabileceğimi biliyorum, ancak bu yöntem serializationStream dizgesini alır, burada seri hale getirilmiş nesneyi yazar.

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

serileştirme bayt almaya ben [*] yapabileceği herhangi bir yolu var mı: Ben böyle bir şey yapmak istiyorum bu yüzden belirli bir konumda bir dosya/akışında yazmaya mümkün istiyorum bir nesnenin

+3

Bunun yerine bir MemoryStream serileştirebilir misiniz? Ve sonra sadece stream'in arabasını al. – itsme86

cevap

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

teşekkürler! Bu benim aradığım şey :) – insumity