Ошибка форм Xamarin при десериализации данных XML C # - PullRequest
0 голосов
/ 17 февраля 2019

Я пытаюсь десериализовать XML-файл, который существует на локальном веб-сервере, в объекты пользовательских типов, используя классы c # в Xamarin Forms для использования на устройстве 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;

Некоторые классы, в том числе Skill, наследуют от Xamarin.Forms Views.

Вот пример части одного из сериализованных классов, которая делает это.Включая одну из его коллекций.

[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;
...