public sealed class Settings { private static Settings instance; Settings() { } public static Settings Instance { get { if(instance == null) { instance = new Settings(); } return instance; } set { instance = value; } } public List Openers = new List(); } [Serializable] public class Opener { public string Filename { get; set; } public string DisplayName { get; set; } public string Parameters { get; set; } public bool OnlyFirst { get; set; } public Opener(string dname, string fname, string param, bool first) { this.Filename = fname; this.DisplayName = dname; this.Parameters = param; this.OnlyFirst = first; } public override string ToString() { return DisplayName; } public Opener() { Filename = ""; DisplayName = ""; Parameters = ""; OnlyFirst = true; } } ///method to write the values System.Xml.Serialization.XmlSerializer writer = new System.Xml.Serialization.XmlSerializer(Settings.Instance.GetType()); System.IO.StreamWriter file = new System.IO.StreamWriter("apphere.settings"); //even if I add Clear() it will not serialize after I add anything to openers. eg Settings.Instance.Openers.Add(new Opener(name, path, params, true)) Settings.Instance.Openers.Clear(); writer.Serialize(file, Settings.Instance); file.Flush(); file.Close();