Включение индекса артерии в сериализацию XML - PullRequest
2 голосов
/ 02 октября 2008

У меня есть класс, который выглядит так

public class SomeClass
{
    public SomeChildClass[] childArray;
}

, который будет выводить XML из XMLSerializer следующим образом:

<SomeClass>
   <SomeChildClass>
      ...
   </SomeChildClass>
   <SomeChildClass>
      ...
   </SomeChildClass>
</SomeClass>

Но я хочу, чтобы XML выглядел так:

<SomeClass>
   <SomeChildClass index=1>
      ...
   </SomeChildClass>
   <SomeChildClass index=2>
      ...
   </SomeChildClass>
</SomeClass>

Где атрибут индекса равен позиции элементов в массиве.

Я мог бы добавить свойство индекса к SomeChildClass с атрибутом «XMLAttribute», но тогда мне пришлось бы помнить, что нужно перебрать массив и установить это значение перед сериализацией моего объекта.

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

Ответы [ 3 ]

2 голосов
/ 02 октября 2008

Наилучшим подходом было бы сделать то, что вы сказали, и добавить свойство в "SomeChildClass", как это

[XmlAttribute("Index")]
public int Order
{  { get; set; }   }

Затем, когда вы добавляете эти элементы в свой массив, убедитесь, что это свойство установлено. Затем, когда вы сериализуете .... Presto!

0 голосов
/ 02 октября 2008

Вы можете проверить класс XmlAttributeOverrides.

0 голосов
/ 02 октября 2008

Вам может потребоваться изучить реализацию System.Xml.Serialization.IXmlSerializable для достижения этой цели.

...