Run Code  | Code Wall  | Users  | Misc  | Feedback  | About  | Login  | Theme 

Xml in C#

      
            
                
            
 run  | edit  | history  | help 0

я тут хренью страдал используя xml файлы, наладил сохранение объектов

    public class MyProcess
    {
        /// <summary>
        /// Имя приложения
        /// </summary>
        [XmlElement("Name", IsNullable = false)]
        public string name { get; set; }
        /// <summary>
        /// Полное имя файла
        /// </summary>
        [XmlElement("Path", IsNullable = false)]
        public string path { get; set; }
        /// <summary>
        /// 0 - unknown
        /// 1 - TCP
        /// 2 - UDP
        /// </summary>
        public List<int> protocol { get; set; }
        /// <summary>
        /// Номер порта, протокол хранится в переменной protocol с тем же индексом.
        /// </summary>
        public List<int> port { get; set; }

        /// <summary>
        /// Конструктор (необходимо для сохранения в XML)
        /// </summary>
        public MyProcess() { }

        /// <summary>
        /// Конструктор, создающий новый экземпляр объекта. Инициализирует списки protocol и port
        /// </summary>
        /// <param name="name">Имя приложения</param>
        /// <param name="path">Полное имя файла</param>
        public MyProcess(string name, string path) 
        { 
            this.name = name;
            this.path = path;
            this.protocol = new List<int>();
            this.port = new List<int> ();
        }
    }
    /// <summary>
    /// Класс, группирующий все процессы, выбранные пользователем. Используется как корень для XML
    /// </summary>
    [XmlRootAttribute("Settings", Namespace = "TCPUDPListener")]
    public class Processes
    { 
        /// <summary>
        /// Индекс выбранного процесса (текущий процесс)
        /// </summary>
        [XmlElement("DefaultSelectedProcess")]
        public int selected { get; set; }
        /// <summary>
        /// Список всех процессов (имя, полное имя файла, протокол, порт)
        /// </summary>
        [XmlArray("Processes"), XmlArrayItem("Process")]
        public List<MyProcess> processes { get; set; }

        /// <summary>
        /// Конструктор. Инициализирует список процессов (processes).
        /// </summary>
        public Processes() { processes = new List<MyProcess>(); }
    }
    /// <summary>
    /// Список процессов
    /// </summary>
    private Processes processList = new Processes();
           /// <summary>
    /// Сохраняет список процессов в XML (имя файла указывается при инициализации списка)
    /// </summary>
    public void SaveProcessList()
    {
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(Processes));
        TextWriter fs = new StreamWriter(settingsFileName);
        xmlSerializer.Serialize(fs, processList);
        fs.Close();
    }
    /// <summary>
    /// Загружает список процессов из XML (имя файла указывается при инициализации списка)
    /// </summary>
    public void LoadProcessList()
    {
        SelectedIndex = -1;
        if (!File.Exists(settingsFileName)) return;
        XmlSerializer xmlSerializer = new XmlSerializer(typeof(Processes));
        TextReader fs = new StreamReader(settingsFileName);
        processList = (Processes)xmlSerializer.Deserialize(fs);
        fs.Close();
    }
  by  delamer, 1 months ago




Please log in to post a comment.