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 derXmlWriter.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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
https://weblogs.asp.net/rajbk/Contents/Item/Display/345
Den entsprechenden code aus dem Artikel:
Ich habe versucht, die zwei Funktionen ohne viel Mühe. Das einzige, was ich geändert habe war diese Zeile:
zu diesem:
typeof() erfordert eine tatsächliche Typ in der Erwägung, dass GetType() gibt den Typ des Objekts.