我在这里有点头疼,因为我认为我正确地做到了这一点! 我需要创建一个xml文件,如下所示(我已经省略了名称空间声明)
<races>
<race racename="race one">
<horse>
<name>Silver</name>
<age>6</name>
</horse>
</race>
</races>
班级比赛是班级比赛的集合,而班级比赛是班级马的集合。下面是我所拥有的种族类的相关代码,并且正在引起问题(至少我认为)。
[Serializable]
[XmlType("race")]
public class Race : CollectionBase
{
private string _raceName;
[XmlAttribute("racename")]
public string RaceName
{
get
{
return this._raceName;
}
set
{
this._raceName = value;
}
}
我按预期构建了xml文件除了属性racename没有被序列化。它绝对是在序列化之前分配给race对象的。有什么想法吗?我显然在某个地方遗漏了一些东西,但我不确定我是如何测试它失败的地方。任何帮助将不胜感激!
约恩。
答案 0 :(得分:1)
在实现IEnumerable的类中,只有集合是序列化的,而不是公共属性。
使用Race类中的Horse集合并删除:CollectionBase
[Serializable]
[XmlType("race")]
public class Race
{
[XmlElement("horse")]
public List<Horse> Horses { get; set; }
[XmlAttribute("racename")]
public string RaceName
{
get;
set;
}
public Race()
{
Horses = new List<Horse>();
}
}
结果
<race xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" racename="race one">
<horse>
<Name>Silver</Name>
<Age>6</Age>
</horse>
</race>
答案 1 :(得分:0)
我建议你在解决方案中创建一个测试控制台应用程序,并测试代码如http://pastebin.com/bP340WmR,如果它工作正常,创建一个对象集合并尝试序列化。一步一步地进行将有助于了解问题的确切位置。