我正在尝试使用Xamarin Forms中的c#类将本地Web服务器上存在的XML文件反序列化为自定义类型的对象,以供在Android设备上使用。 反序列化过程中出现错误:
“要进行XML序列化,必须继承自ICollection的类型 在以下所有级别上具有Add(Xamarin.Forms.Element)的实现 它们的继承层次结构。”
为什么会出现此错误?我在哪里放置Add方法,为什么?
我尝试在每个可序列化的类上添加一个空的Add方法-这不能解决问题。
这部分代码进行反序列化。
XmlSerializer xs = new XmlSerializer(typeof(PartyData));
var reader = XmlReader.Create("192.168.0.14/SkillTreesDB.aspx");
partyData = xs.Deserialize(reader) as PartyData;
某些类(包括“技能”)是从Xamarin.Forms视图继承的。
这是其中一个序列化类之一的一部分的示例。包括其中一个收藏。
[Serializable]
public class Skill : StackLayout
{
[XmlAttribute("name")]
public string name;
[XmlAttribute("level")]
public int level;
[XmlAttribute("expToNext")]
public int expToNext;
[XmlAttribute("exp")]
public int exp;
[XmlAttribute("scaling")]
public float scaling;
[XmlArray("subSkills") , XmlArrayItem(typeof(SubSkill), ElementName = "subSkill")]
public List<SubSkill> subSkills;