我已经检查了SO上的三个点击,给出了错误信息。它们似乎都不相关(reader on element created,document isn't empty,wrong library used)。
我的 Mapping 类看起来像这样。
[Serializable]
public class Mapping
{
[XmlElement] public String Key { get; set; }
[XmlElement] public String Field { get; set; }
[XmlElement] public String Value { get; set; }
[XmlElement] public bool Enable { get; set; }
}
当我尝试使用下面的代码手动分配时,我让它按原样运行。
return characteristics.ToDictionary(
element => element.Element("Name").Value,
element => element.Descendants("DataMapping")
.Select(felement => new Mapping
{
Key = felement.Element("Key").Value
}));
但是,当我尝试对正在读取的相同数据集进行反序列化时,我会在主题中收到错误。
return characteristics.ToDictionary(
element => element.Element("Name").Value,
element => element.Descendants("DataMapping")
.Select(felement
=> serializer.Deserialize(felement.CreateReader()) as Mapping));
我知道(几乎)肯定我做了一些愚蠢的事情而忘记了一些东西,但我却看不出什么......而且我想出更多的事情要想尝试。
答案 0 :(得分:2)
问题是您的元素名为 DataMapping ,您的类名为 Mapping 。您可以将类重命名为 DataMapping ,也可以将 XmlRoot 属性添加到类
[Serializable]
public class DataMapping
{
...
}
...或
[XmlRoot("DataMapping")]
public class Mapping
{
...
}