Как видите, определение HighScoreData
содержит только ссылку на элементы массива, а не сами элементы, поскольку они инициализируются в его конструкторе. XmlSerializer не знает, что такое count
, и не может называть параметризованный конструктор. Поскольку HighScoreData равен struct
, вы не можете определить конструктор без параметров (а тот, который происходит "за кулисами", не создает элементы массива).
Решение (которое меняет настолько мало кода, насколько это возможно) состоит в том, чтобы изменить HighScoreData
на class
и создать конструктор без параметров. Чтобы сделать последнее, вам придется заранее определиться с размером массивов. Итак:
public class HighScoreData
{
public string[] PlayerName;
public int[] Score;
public int[] Level;
public const int MaxScores = 100;
public HighScoreData()
{
PlayerName = new string[MaxScores];
Score = new int[MaxScores];
Level = new int[MaxScores];
}
}