【发布时间】:2013-02-04 19:51:57
【问题描述】:
我的情况是,我只需要将对象成员的值序列化到文件中。
例如,如果对象包含 3 个字符串成员,我希望序列化的输出只有这 3 个字符串,而没有 Binaryformatter 添加的序列化元数据,例如版本、文化和程序集对象的名称。
一种选择是直接编写对象的每个成员,但我想避免这种情况,因为我有很多需要像这样序列化的类,我不想编写一个以不同方式处理它的函数每个班级。
要求:
我希望能够写入任何类型的文件,我希望将成员的值转换为字节(进入缓冲区或直接进入文件)并能够将这些字节写入特定位置在文件中。
是否有方法或 API 仅序列化对象成员的值?
【问题讨论】:
-
你打算在某个时候反序列化它吗?
-
可能不会,但如果我需要反序列化对象的成员,我可能会单独读取每个成员。
-
有任意数量的替代序列化 API; xml、json、protobuf 等。所有这些都可以在没有类型元数据信息的情况下使用。但是这里缺少很多要求/上下文...
-
@Matan - 使用反射,您可以询问对象,然后将您想要的数据从对象写入文件。这将是通用的(您只需编写一次),并且您可以以您想要的格式编写文件(与使用现有的序列化 API 相比)。链接到微软的反射文档 -> msdn.microsoft.com/en-us/library/ms173183(v=vs.80).aspx
-
@DavidHope +1 使用反射来“询问”对象。
标签: c# serialization binaryformatter