如果有一个对象每个公共属性必须序列化且属性很简单(只是数字或字符串或对象已经实现ISerializable
),是否有一个简单的方法可以做它不必创建GetObjectData(SerializationInfo info, StreamingContext context)
和每次都以SerializationInfo
作为参数的构造函数?
我知道它可以通过反射手动完成,但.NET Framework中有一个神奇的方法可以做到吗?
所以正确的答案是:
不要尝试实现ISerializable - 它用于自定义序列化。而是在类声明之前添加[Serializable]属性。
答案 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();