将对象序列化为XML:IList<;自定义对象>;属性导致异常
本文关键字:对象 gt 自定义 属性 异常 lt XML IList 序列化 | 更新日期: 2023-09-27 18:29:15
我正在使用以下函数尝试将对象序列化为XML。。
public static string SerializeObject<T>(T obj)
{
try
{
string xmlString = null;
MemoryStream memoryStream = new MemoryStream();
XmlSerializer xs = new XmlSerializer(typeof(T));
XmlTextWriter xmlTextWriter = new XmlTextWriter(memoryStream, Encoding.UTF8);
xs.Serialize(xmlTextWriter, obj);
memoryStream = (MemoryStream)xmlTextWriter.BaseStream;
xmlString = UTF8ByteArrayToString(memoryStream.ToArray()); return xmlString;
}
catch (Exception ex)
{
return string.Empty;
}
}
当试图序列化一个包含IList属性的对象时,我会得到以下异常。。
Cannot serialize member 'ObjectModel.Order.LineItems' of type 'System.Collections.Generic.IList
有人能帮我更改功能以适应这种情况吗?
我可以用现有的代码来查看输入对象吗。如果是Ilist类型,请将其更改为List?如果可能的话,有人能帮我写代码吗??
这方面没有很好的解决方案,只有在这种情况下使用List<T>
这样的具体类型的变通方法-您可以将现有属性更改为List<T>
,也可以添加一个仅用于类型List<T>
序列化的附加属性(XML忽略现有属性)。
IList<T>
的属性。有一些变通方法,其中最简单的是更改属性的类型:
https://www.google.com/search?q=xmlserializer+ilist
Xml输出有多重要?二进制格式更适合使用。如果需要,可以将输出转换为base64字符串。
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.formatters.binary.binaryformatter(v=vs.71).aspx