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?

Foi útil?

Solução

A melhor abordagem seria fazer o que você disse e adicionar uma propriedade para o "SomeChildClass" como esta

[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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top