estoy escribiendo funciones comunes para serializar el objeto dado y lista <objeto> de la siguiente manera finacómo serializar Lista <object>
public string SerializeObject(Object pObject)// for given object
{
try
{
String XmlizedString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(pObject));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, pObject);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString;
}
catch (Exception e) { System.Console.WriteLine(e); return null; }
}
public string SerializeObject(List<Object> pObject)// for given List<object>
{
try
{
String XmlizedString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(pObject));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, pObject);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString;
}
catch (Exception e) { System.Console.WriteLine(e); return null; }
}
primero está trabajando. Si paso cualquier tipo, se está devolviendo correctamente la cadena xml.
CORRECCIÓN: Error de compilación ha ocurrido por segundo (Error:. No se puede convertir de List<MyType>
a List<object>
que volver a escribir la segunda como sigue que resuelve mi problema ahora se serializando lo dado List<generic types>
private string SerializeObject<T>(T source)
{
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(T));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, source);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
string XmlizedString = UTF8ByteArrayToString(memoryStream.ToArray());
return XmlizedString;
}
@afin: tal vez no se dio cuenta, pero no debería usar 'new XmlTextWriter()' nunca más. Ha quedado en desuso en favor de 'XmlWriter.Create()'. Desde .NET 2.0. –
@john: gracias – afin
Puede consultar Fasterflect (http://fasterflect.codeplex.com), que incluye un método de extensión ToXml para objetos. Es unidireccional y, por lo tanto, podría no ser lo que necesita, pero funcionará para casi todos los objetos. –