Как мне сериализовать несколько объектов с одним и тем же базовым классом в XML? - PullRequest
0 голосов
/ 05 августа 2010

Вот код, который я использую.Я продолжаю получать ошибки в XML-документе

[Serializable]
[XmlRoot("Command")]
public class Command
{
    [XmlElement("CommandType")]
    public CommandType CommandType { get; set; }
}

[Serializable]
[XmlRoot("DelayCommand")]
[XmlInclude(typeof(Command))]
public class DelayCommand : Command
{
    [XmlElement("Delay")]
    public int Delay { get; set; }

    public DelayCommand()
    {
        CommandType = CommandType.Delay;
    }
}

[Serializable]
[XmlRoot("HeartbeatCommand")]
[XmlInclude(typeof(Command))]
public class HeartbeatCommand : Command
{
    [XmlElement("HeartbeatOn")]
    public bool HeartbeatOn { get; set; }

    public HeartbeatCommand()
    {
        CommandType = CommandType.Heartbeat;
    }
}

И вот код для фактической сериализации

    FileStream Filewriter = new FileStream(path, FileMode.OpenOrCreate);

    XmlSerializer XmlFormat = new XmlSerializer(typeof(Command[])); // Make class as an array.

    List<Command> commands = new List<Command>();
    foreach (DataGridViewRow row in gridCommand.Rows)
    {
         commands.Add(row.Tag as Command);
    }

    XmlFormat.Serialize(Filewriter, commands.ToArray());

1 Ответ

0 голосов
/ 05 августа 2010

Похоже, это может быть вашим ответом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...