如果有一个对象,其中每个公共(public)属性都必须序列化并且属性很简单(只是数字或字符串或已经实现ISerialized
的对象),是否有一个简单的方法无需创建 GetObjectData(SerializationInfo info, StreamingContext context)
和每次都将 SerializationInfo
作为参数的构造函数来做到这一点?
我知道这可以通过反射手动完成,但是 .NET Framework 中有一个神奇的方法可以做到这一点吗?
所以正确答案是:
Don't try to implement ISerializable - it is for custom serialization. Instead add the [Serializable] attribute right before your class declaration.
最佳答案
尝试 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();
关于c# - 是否有对对象中的每个属性进行二进制序列化的快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3428916/