C# 将对象序列化为XML:IList<;CustomObject>;属性导致异常

C# 将对象序列化为XML:IList<;CustomObject>;属性导致异常,c#,serialization,C#,Serialization,我正在使用以下函数尝试将对象序列化为XML public static string SerializeObject<T>(T obj) { try { string xmlString = null; MemoryStream memoryStream = new MemoryStream(); XmlSerializer

我正在使用以下函数尝试将对象序列化为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,请将其更改为列表?如果XmlSerializer无法处理IList类型的属性,那么somoeone能否帮助我编写代码。有一些解决方法,其中最简单的是更改属性的类型:


XmlSerializer不处理类型为
IList
的属性。有一些解决方法,其中最简单的是更改属性的类型:


对此没有很好的解决方案,只有在这种情况下使用具体类型(如
List
)的变通方法-您可以将现有属性更改为
List
,或者添加一个仅用于序列化类型
List
(和XML忽略现有属性)的附加属性.

对此没有很好的解决方案,只有在本例中使用具体类型(如
List
)的变通方法-您可以将现有属性更改为
List
,或者添加一个仅用于序列化类型
List
(和XML忽略现有属性)的附加属性.

Xml输出有多重要?二进制格式更适合。如果需要,可以将输出转换为base64字符串


Xml输出有多重要?二进制格式更适合。如果需要,可以将输出转换为base64字符串


我可以检查输入对象中是否存在IList,如果存在,可以随时更改它的列表吗?不,这不太可能,您必须更改您的类定义。我可以检查输入对象中是否存在IList,如果存在,可以随时更改它的列表吗?不,不可能,您必须更改您的类定义
Cannot serialize member 'ObjectModel.Order.LineItems' of type 'System.Collections.Generic.IList