Tôi viết thư này chức năng phổ biến để serialize các đối tượng nhất định và Danh sách < đối tượng > như sau tốtLàm thế nào để serialize Danh sách <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; }
}
đầu tiên đang làm việc. Nếu tôi vượt qua bất kỳ loại nào, nó sẽ trả về chuỗi xml thành công.
SỬA CHỮA: Lỗi Compilation đã xảy ra trong một giây (Lỗi:. Không thể chuyển đổi từ List<MyType>
để List<object>
Tôi viết lại một giây như sau đó giải quyết vấn đề của tôi Bây giờ nó được serializing cho 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: có thể bạn không nhận ra, nhưng bạn không nên sử dụng 'new XmlTextWriter()' nữa. Nó đã bị phản đối vì lợi ích của 'XmlWriter.Create()'. Kể từ .NET 2.0. –
@john: cảm ơn bạn – afin
Bạn có thể kiểm tra Fasterflect (http://fasterflect.codeplex.com), bao gồm phương thức mở rộng ToXml cho các đối tượng. Đó là một chiều duy nhất và do đó có thể không phải là những gì bạn cần nhưng nó sẽ làm việc cho khá nhiều đối tượng. –