Сериализация объекта и содержащихся в нем объектов - PullRequest
0 голосов
/ 18 мая 2010

Существует основной класс, имеющий 2 подкласса (каждый представляет отдельную сущность), и все классы должны быть сериализованы. Как мне поступить? Мое требование - когда я serelize MainClass, я должен получить xml для каждого подкласса и основного класса. Заранее спасибо ... и если мой подход неправильный ... исправьте это также ..

Пример приведен ниже ...

class MainClass
{
   SubClass1 objSubclass1 = null;   
   SubClass2 objSubclass2 = null;
   public MainClass()
   {
     objSubclass1 = new SubClass1();
     objSubclass2 = new SubClass2();
   }
   [XmlElement("SubClass1")]
   public SubClass1 SubClass1 {get {return objSubclass1;} }
   [XmlElement("SubClass2")]
   public SubClass2 SubClass2 {get {return objSubclass2;} }
}

Class SubClass1
{
  Some properties here...
}

Class SubClass2
{
  Some properties here...
}

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

Сериализация XML требует, чтобы свойства были доступны для чтения / записи. Так что вам нужно реализовать get и set.

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

1 голос
/ 18 мая 2010

Чтобы XML-сериализация работала со свойствами, вам необходимо иметь и методы получения, и установки для свойств.

Кроме того, обычно, когда используется термин подкласс, он означает класс, производный от базового класса. Похоже, это не так, поэтому ваш пример немного сбивает с толку.

Если вам действительно нужно сериализовать подклассы, где статический тип свойства является базовым классом, см. XmlIncludeAttribute .

...