Saltar al contenido

XmlSerializer: hubo un error al reflejar el tipo

Este equipo especializado luego de algunos días de investigación y de juntar de datos, dimos con la solución, nuestro deseo es que resulte de utilidad en tu proyecto.

Solución:

Mire la excepción interna que está obteniendo. Le dirá qué campo/propiedad tiene problemas para serializar.

Puede excluir campos/propiedades de la serialización xml decorándolos con el [XmlIgnore] attribute.

XmlSerializer no usa el [Serializable] attributeasí que dudo que ese sea el problema.

Recuerde que las clases serializadas deben tener constructores predeterminados (es decir, sin parámetros). Si no tiene ningún constructor, está bien; pero si tiene un constructor con un parámetro, también deberá agregar el predeterminado.

Tuve un problema similar y resultó que el serializador no podía distinguir entre 2 clases que tenía con el mismo nombre (una era una subclase de la otra). La excepción interna se veía así:

‘Types BaseNamespace.Class1’ y ‘BaseNamespace.SubNamespace.Class1’ usan el nombre de tipo XML, ‘Class1’, del espacio de nombres ”. Usar XML attributes para especificar un nombre XML único y/o un espacio de nombres para el tipo.

Donde BaseNamespace.SubNamespace.Class1 es una subclase de BaseNamespace.Class1.

Lo que tenía que hacer era agregar un attribute a una de las clases (agregué a la clase base):

[XmlType("BaseNamespace.Class1")]

Nota: Si tiene más capas de clases, debe agregar una attribute a ellos también.

Comentarios y calificaciones

Si entiendes que ha sido de utilidad nuestro post, nos gustaría que lo compartas con el resto juniors y nos ayudes a dar difusión a nuestro contenido.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *