Estoy interesado en la mejor manera de establecer los nombres de elementos personalizados al usar la Lista de primitivos con el DataContractSerializer. Digamos que tengo la siguiente clase que contiene una Lista de cadenas como un DataMember.Nombres de elementos personalizados usando DataContractSerializer en una lista de primitivos
[DataContract]
public class ClassName
{
[DataMember]
public List<String> FieldName { get; set; }
}
Por defecto, esta serializa a lo siguiente:
<ClassName xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<FieldName xmlns:a="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<a:string>Value 1</a:string>
<a:string>Value 2</a:string>
<a:string>Value 3</a:string>
</FieldName>
</ClassName>
me gustaría hacer el XML lo más simple posible para transformar a través de XSLT por lo que idealmente me gustaría cambiar el nombre de las etiquetas en algo más útil, como el valor
Una posible solución implica la creación de una clase que amplíe la Colección y establezca el ItemName para el parámetro CollectionDataMember, que encontré here. Me preguntaba si había una manera de lograr el mismo objetivo sin la necesidad de una clase extra u otra forma de clase contenedora. El serializador XML hace uso de los parámetros XMLArray y XMLArrayItem para lograr esto, pero el DataContractSerializer no parece tener una funcionalidad similar.
¡Gracias por cualquier consejo o idea!
Otra opción podría ser que se crea una clase llamada "Valor: String" que hereda de System.String y el uso que en el DataMember ... – Nabheet
@NabheetSandhu 'System.String' está sellado. No puedes heredar de eso. –