是否存在二进制序列化对象中每个属性的快捷方式?

时间:2010-08-07 02:19:22

标签: c# serialization binary-serialization iserializable

如果有一个对象每个公共属性必须序列化且属性很简单(只是数字或字符串或对象已经实现ISerializable),是否有一个简单的方法可以做它不必创建GetObjectData(SerializationInfo info, StreamingContext context)和每次都以SerializationInfo作为参数的构造函数?

我知道它可以通过反射手动完成,但.NET Framework中有一个神奇的方法可以做到吗?


所以正确的答案是:

  

不要尝试实现ISerializable - 它用于自定义序列化。而是在类声明之前添加[Serializable]属性。

1 个答案:

答案 0 :(得分:4)

尝试BinaryFormatter类 - 应该做你需要的事情

编辑:您不是从BinaryFormatter派生的 - 它是用于进行序列化的实用程序类。以下是从文档中复制的示例

MyObject obj = new MyObject();
obj.n1 = 1;
obj.n2 = 24;
obj.str = "Some String";
IFormatter formatter = new BinaryFormatter();
Stream stream = new FileStream("MyFile.bin", FileMode.Create, FileAccess.Write, FileShare.None);
formatter.Serialize(stream, obj);
stream.Close();