using System.Collections.ObjectModel;
using System.Xml.Serialization;
using System.ComponentModel;
public static void Main()
var list = new ObservableCollection<ModelRun>();
list.Add(new ScenarioModelRun { ScenarioConfiguration = new ScenarioConfiguration(), Value = "test" });
var output = new StringWriter();
var serializer = new XmlSerializer(typeof(ObservableCollection<ModelRun>), new[] { typeof(ScenarioModelRun), typeof(ScenarioConfiguration) });
serializer.Serialize(output, list);
var xml = output.ToString();
serializer.Deserialize(new StringReader(xml)).Dump();
public class ModelRun : INotifyPropertyChanged
public string Value { get; set; }
public event PropertyChangedEventHandler PropertyChanged;
public class ScenarioConfiguration
public class ScenarioModelRun : ModelRun
public ScenarioConfiguration ScenarioConfiguration { get; set; }