2013-04-01 30 views
5

Tôi có đối tượng, ví dụ của lớp Serializable. Tôi đã tự hỏi làm thế nào bạn có thể nhận được đối tượng này như là một dòng byte?Sắp xếp một đối tượng trong C# và nhận luồng byte

Tôi biết tôi có thể sử dụng BinaryFormatter và sau đó sử dụng phương pháp Serialize, nhưng phương pháp này mất serializationStream nơi ghi đối tượng được tuần tự hóa. Tôi muốn để có thể viết nó trong một tập tin/suối ở một vị trí cụ thể vì vậy tôi muốn làm một cái gì đó như:

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

Có cách nào tôi có thể làm các [*], để có những byte của serialization của một đối tượng?

+3

Thay vào đó, bạn có thể tuần tự hóa nó vào MemoryStream không? Và sau đó chỉ cần lấy bộ đệm của luồng. – itsme86

Trả lời

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

cảm ơn! Đây là những gì tôi đang tìm :) – insumity

Các vấn đề liên quan