c# - 是否有对对象中的每个属性进行二进制序列化的快捷方式?

标签 c# serialization binary-serialization iserializable

如果有一个对象,其中每个公共(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/

相关文章:

c# - Directory.GetFiles 方法上的 searchPattern 逻辑

c# - 我如何重定向到另一个传递数据但没有 C# 帖子的页面

java - 无法使用 GSON 将复杂的 json 序列化为对象?

c# - 如何让 Json Serialize 忽略字典键

Scala 位域序列化

c# - RegistryKey ValueCount/SubKeyCount 错误

serialization - 基于它与 Jackson 或 Gson 实现的一个接口(interface)序列化类

c# - XmlSerializer 和 BinaryFormatter 之间有什么区别

c# - 反序列化通用列表返回 null

c# - 什么让我困惑....NET 语言是 Windows(独立)应用程序的主流语言吗?