0
我都不再如下因素类:反序列化SortedSet:为什么项目需要实现IComparable?
[DataContract]
public class MyProject
{
[DataMember(Name = "Branches")]
private SortedSet<ModuleFilter> branches = new SortedSet<ModuleFilter>(new ModuleFilterComparer());
[DataMember(Name="VbuildFilePath")]
private string buildprogram = null;
}
我可以把它序列化到一个文件:
DataContractSerializer x = new DataContractSerializer(p.GetType());
using (System.Xml.XmlWriter writer = System.Xml.XmlWriter.Create(p.GetFilePath()))
{
x.WriteObject(writer, p);
}
但是当我尝试与如下因素的代码读回,它失败,除非我添加一个虚拟实现了IComparable到ModuleFilter对象
DataContractSerializer x = new DataContractSerializer(typeof(MyProject));
using (System.Xml.XmlReader reader = System.Xml.XmlReader.Create(filePath))
{
p = (MyProject)x.ReadObject(reader);
}
为什么没有解串器使用的SortedSet成员所提供的IComparer?
谢谢