C# DataContractSerializer失败,数据为空
我有一些Windows Phone 7的RSS应用程序代码:C# DataContractSerializer失败,数据为空,c#,windows-phone-7,xml-serialization,windows-phone-8,data-serialization,C#,Windows Phone 7,Xml Serialization,Windows Phone 8,Data Serialization,我有一些Windows Phone 7的RSS应用程序代码: private RSSSettings DeserializeSettings(string data) { RSSSettings rsssettings; try { var ser = new DataContractSerializer(typeof(RSSSettings)); using (var sr = new St
private RSSSettings DeserializeSettings(string data)
{
RSSSettings rsssettings;
try
{
var ser = new DataContractSerializer(typeof(RSSSettings));
using (var sr = new StringReader(data))
using (var xr = XmlReader.Create(sr))
rsssettings = (RSSSettings)ser.ReadObject(xr);
}
catch (Exception ex)
{
ex.ToString();
rsssettings = new RSSSettings() { Version = -1 };
}
return rsssettings;
}
它可以在WindowsPhone7上完美工作。我将该应用程序移植到WindowsPhone8,除此之外,该应用程序中的所有其他功能都正常工作
比较WindowsPhone7和8中的情况,WP8中的“rsssettings”在WP7中正确填充时保持为空。这部分代码根本没有更改
一切都一样,直到:
rsssettings = (RSSSettings)ser.ReadObject(xr);
不调用异常
有人知道如何解决这个令人沮丧的问题吗?是的,你不会喜欢这样的 WP8上的DataContractSerializer要求按字母顺序组织XML元素。这是因为假设进入DataContractSerializer的所有内容都来自另一个DataContractSerializer 我希望这是我编造的,但我不是。从MSDN: DataContractSerializer类 WP8行为:XML元素必须按字母顺序排序 WP7行为:XML元素可以是无序的 在这一点上,您有几种选择:
我首先比较数据对象的内容。它们相同吗?数据对象完全相同。这就是让我如此困惑的原因:(这两种情况下的数据都是XML,这两种情况下的数据似乎一直在传输,直到我突出显示的那一行。Omg。好吧,这将很困难:/谢谢!