views:

15

answers:

1

Here's the code I'm using. I keep getting xml document errors

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

And here's the code to actually serialize

    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());
A: 

It looks like this might be your answer.

AllenG
That example does not show multiple different inherited classes being serialized. He only has 1 class and is serializing an array of that class
Tom