Установить XML-сериализацию в результате получения корня документа - PullRequest
0 голосов
/ 19 марта 2012

У меня есть другая проблема (которая не может быть проблемой с точки зрения проблем с кодированием), но больше из принципа ... меня некоторое время беспокоило.У меня есть этот класс C #, как показано ниже:

namespace SMCProcessMonitor
{
    public class Config
    {     
        [XmlElement("Recipient")]
        public string recipient;

        [XmlElement("Server-port")]
        public int serverport;

        [XmlElement("Username")]
        public string username;

        [XmlElement("Password")]
        public string password;

        [XmlElement("Program")]
        public List<Programs> mPrograms = new List<Programs>();

        [Serializable]
        [XmlRoot("Email-Config")]
        public class Email
        {
            public string Recipient
            {
                get
                {
                    return SMCProcessMonitor.ConfigManager.mConfigurations.recipient;
                }
                set
                {
                    SMCProcessMonitor.ConfigManager.mConfigurations.recipient = value;
                }
             }

             public int ServerPort
             {
                 get
                 {
                     return SMCProcessMonitor.ConfigManager.mConfigurations.serverport;
                 }
                 set
                 {
                     SMCProcessMonitor.ConfigManager.mConfigurations.serverport = value;
                 }
             }
             public string Username
             {
                 get
                 {
                     return SMCProcessMonitor.ConfigManager.mConfigurations.username;
                 }
                 set
                 {
                     SMCProcessMonitor.ConfigManager.mConfigurations.username = value;
                 }
             }

        public string Password { get; set; }
    }
}

Я могу сериализировать это почти нормально.(я недавно изменил простой get; set; на полную версию, как показано выше, но при сериализации я получаю что-то вроде этого;

<Config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Recipient>sd</Recipient>
    <Server-port>1234</Server-port>
    <Username>dk</Username>
    <Password>kdkdk</Password>
</Config>

В основном я хочу обернуть эти 4 тега в «настройки электронной почты»"tag.

Ответы [ 3 ]

2 голосов
/ 19 марта 2012

Добавьте атрибуты Serializable () и XmlRoot до базового класса:

[Serializable()] 
[XmlRoot("Email-Settings")] 
public class Config 
1 голос
/ 19 марта 2012

Существуют атрибуты для управления такими аспектами сериализации xml, как это, см. Управление сериализацией XML с использованием атрибутов .

Я думаю, что вам нужен именно XmlRootAttribute .

0 голосов
/ 19 марта 2012

Вам нужно будет создать класс EmailSettings, содержащий эти 4 свойства, а затем сделать экземпляр класса EmailSettings членом вашего класса Config.

...