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.