Das serialisieren der Liste<object>

Schreibe ich Allgemeine Funktionen zum serialisieren des Objektes und List<object> wie folgt

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; }
}

erste ist in Ordnung. Wenn ich den pass jeder Art, es ist erfolgreich die Rückgabe von xml-string.

KORREKTUR: Kompilierungs-Fehler ist aufgetreten, für den zweiten (Fehler: cannot convert from List<MyType> zu List<object>.

Ich umschreiben, die zweite wie folgt das löst mein problem. Jetzt ist es an der Serialisierung der gegebenen 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;
}
  • vielleicht haben Sie nicht erkennen, aber Sie sollten nicht new XmlTextWriter() mehr. Es wird als veraltet angesehen zugunsten der XmlWriter.Create(). Da .NET 2.0.
  • danke
  • Man könnte prüfen, Fasterflect (fasterflect.codeplex.com), die eine ToXml-Erweiterung-Methode für Objekte. Es ist one-way und nur so könnte nicht das sein, was Sie brauchen, aber es funktioniert für so ziemlich jedes Objekt.
InformationsquelleAutor afin | 2010-04-20
Schreibe einen Kommentar