我正在尝试将一些 xml 文件反序列化为一些已简化为以下的类:
[XmlRoot("person")]
[Serializable]
public class Person
{
[XmlElement]
public Toy Toy { get; set; }
}
[Serializable]
public class ActionMan : Toy
{
[XmlElement("guns")]
public string Guns;
}
[Serializable]
public class Doll : Toy
{
[XmlElement("name")]
public String Name;
}
[XmlInclude(typeof(Doll))]
[XmlInclude(typeof(ActionMan))]
public class Toy
{
}
[TestFixture]
public class ToyTest
{
[Test]
public void testHierarchy()
{
String filePath = @"test\brother.xml";
String sisfilePath = @"test\sister.xml";
var serializer = new XmlSerializer(typeof(Person));
Person brother = (Person)serializer.Deserialize(new FileStream(filePath, FileMode.Open));
Person sister = (Person)serializer.Deserialize(new FileStream(sisfilePath, FileMode.Open));
Assert.IsNotNull(brother);
Assert.IsNotNull(sister);
Assert.IsAssignableFrom(typeof(ActionMan),brother.Toy);
Assert.IsAssignableFrom(typeof(Doll),sister.Toy);
}
}
我想使用 c# 序列化(我知道我可以使用我自己的反序列化器),我想我可能只是缺少一个我不知道的特定标签(而且我确定我有多余的标签)。
这是一个 xml 文件:
<person>
<doll>
<name>Jill</name>
</doll>
</person>
我得到的错误是第三个断言上的“Expected: assignable from”
最佳答案
类 person 应该包含“娃娃”属性而不是“玩具”属性,我指的是名字。 XML 节点必须具有与属性名称相同的名称 - 大小写很重要。
关于c# - 如何使用具有层次结构的类结构的 C# 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5006891/