【发布时间】:2015-12-20 21:13:41
【问题描述】:
我需要序列化/反序列化具有子类的类,其中成员是字典。另一个成员是存储密码的类,因此它不能是 XML,而是二进制。 发现了一个非常好的解决方案,它可能很容易且没有问题。
http://theburningmonk.com/2010/05/net-tips-xml-serialize-or-deserialize-dictionary-in-csharp/
但是这个例子(以及我发现的所有其他例子)有一个 xml 输出,这不是我的问题的正确解决方案。
所以问题是:“如何使用二进制而不是 xml 输出进行数据合同序列化?” 提前感谢
---添加--- 即使使用该类的文件流:
[DataContract]
public class MyClass
{
// need a parameterless constructor for serialization
public MyClass()
{
MyDictionary = new Dictionary<string, string>();
}
[DataMember]
public Dictionary<string, string> MyDictionary { get; set; }
public int aaaa = 3;
}
做事
MyClass theclass = new MyClass();
var serializer = new DataContractSerializer(typeof(MyClass));
bool append = true;
using (Stream fileStream = File.Open("aaa.bin", append ? FileMode.Append : FileMode.Create))
{
serializer.WriteObject(fileStream, theclass);
}
输出是 XML。
【问题讨论】:
-
DataContractSerializer.WriteObject有一个接受二进制写入器的重载,您没有使用它 - 请参阅msdn.microsoft.com/en-us/library/ms752244(v=vs.110).aspx。将数据序列化为二进制格式不是一种安全的密码存储方式。 -
感谢工作正常。为什么不将其作为解决方案发布?
标签: c# wpf dictionary binary-serialization