Incluindo índice de matriz em XML serialização
-
03-07-2019 - |
Pergunta
Eu tenho uma classe que se parece com isso
public class SomeClass
{
public SomeChildClass[] childArray;
}
que XML saída vontade do XMLSerializer como esta:
<SomeClass>
<SomeChildClass>
...
</SomeChildClass>
<SomeChildClass>
...
</SomeChildClass>
</SomeClass>
Mas eu quero o XML para ficar assim:
<SomeClass>
<SomeChildClass index=1>
...
</SomeChildClass>
<SomeChildClass index=2>
...
</SomeChildClass>
</SomeClass>
Quando o atributo índice é igual à posição itens na matriz.
Eu poderia acrescentar uma propriedade índice para SomeChildClass com o atributo "XmlAttribute" mas então eu teria que lembre-se de percorrer a matriz e definir esse valor antes de eu serializar meu objeto.
Existe algum atributo i pode adicionar ou alguma outra maneira para gerar automaticamente o atributo índice para mim?
Solução
A melhor abordagem seria fazer o que você disse e adicionar uma propriedade para o "SomeChildClass" como esta ??p>
[XmlAttribute("Index")]
public int Order
{ { get; set; } }
Em seguida, no entanto você está adicionando esses itens para sua matriz, certifique-se de que conjunto esta propriedade de get. Então, quando você serializar .... Presto!
Outras dicas
Você pode precisar de olhar para a implementação System.Xml.Serialization.IXmlSerializable para alcançar este objetivo.
Você pode verificar XmlAttributeOverrides Class.