Сериализация. XmlSerializer. Не сериализуются поля, значения которых пустое. т.е. null - C#

Узнай цену своей работы

Формулировка задачи:

Приведу пример класса. Он будет являться шаблонным т.к. на деле он выглядит намного больше. и это будет неэстетично запостить его сюда)). Есть класс:
class OperatingSystem
{
        string _caption;
        string _version;
        string _csdVersion;
        string _description;
        string _registeredUser;
        string _serialNumber;
        string _organization;
        string _installDate;
 
        [XmlAttribute]
        public string Caption
        {
            get { return _caption; }
            set { _caption = value; }
        }
 
        [XmlAttribute]
        public string Version
        {
            get { return _version; }
            set { _version = value; }
        }
 
        [XmlAttribute]
        public string CSDVersion
        {
            get { return _csdVersion; }
            set { _csdVersion = value; }
        }
   
        [XmlAttribute]
        public string Description
        {
            get { return _description; }
            set { _description = value; }
        }
 
        [XmlAttribute]
        public string RegisteredUser
        {
            get { return _registeredUser; }
            set { _registeredUser = value; }
        }
        
        [XmlAttribute]
        public string SerialNumber
        {
            get { return _serialNumber; }
            set { _serialNumber = value; }
        }
      
        [XmlAttribute]
        public string Organization
        {
            get { return _organization; }
            set { _organization = value; }
        }
     
        [XmlAttribute]
        public string InstallDate
        {
            get { return _installDate; }
            set { _installDate = value; }
        }
}
В случае если поля пустые, то после сериализации этого класса выходной XML файл получается таким:
<operatingSystem  />
А нужно чтобы получился таким:
<operatingSystem  Caption="" Version="" CSDVersion="" Description="" RegisteredUser="" SerialNumber="" Organization="" InstallDate="" />
Может кто нибудь знает причину, почему так приосходит? Пытался решить эту проблему получилось так: operatingSystem.Version = ""; - и в этом случае всё ок. но не реально каждому полю присваивать пустое значение.

Решение задачи: «Сериализация. XmlSerializer. Не сериализуются поля, значения которых пустое. т.е. null»

textual
Листинг программы
        [XmlAttribute]
        public string Version
        {
            get { return _version ?? ""; }
            set { _version = value; }
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.875 из 5
Похожие ответы