我使用VS Express 2013在C#中使用其提供的dll驱动程序与设备进行通信。结果我使用了生产者定义的一些类。我想将一些对象保存/读取到一个文件但我不能直接将它们保存到二进制文件中,因为:
一个恼人的解决方案是逐个保存对象中的所有信息,即保存所有整数,数组,布尔等。
using (Stream stream = File.Open(fileName, FileMode.OpenOrCreate))
{
var bF = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
bF.Serialize(stream, saveObj.measurementType);
bF.Serialize(stream, saveObj.Results);
bF.Serialize(stream, saveObj.TimeStamp);
bF.Serialize(stream, saveObj.TXPowerSet);
bF.Serialize(stream, saveObj.ValidCalFlags);
}
是否有更好的解决方案,以便我可以通过几个步骤保存/阅读saveObj
?
它不一定是二进制文件。
编辑:根据评论修改问题。
答案 0 :(得分:3)
没有。需要Serializable
的原因是因为二进制序列化序列化了一个类(公共和私有)的所有字段。您必须明确授予序列化权限,以便无法序列化任何可能包含敏感信息的类。
查看XmlSerializer
和JsonSerializer
。这些方法仅序列化公共数据,因此不需要明确同意。
您也可以使用相同的类进行反序列化,但需要注意公共属性必须是可写的。