2014-02-27 64 views
0

我序列化LINQ对象使用XmlSerializer的,但我得到错误而序列化类XML

“有反射式 “System.Collections.Generic.List`1" 错误

我已经扩展了带有Seri​​lizable属性的Linq对象,这些我在这里做的不正确?

[Serializable] 
public partial class Customer 
{ 
} 

[Serializable] 
public partial class Comment 
{ 
} 


[Serializable] 
public class CustomerArchive 
{ 
    public Customer MyCustomer{ get; set; } 
    public Comment MyComment { get; set; } 
} 



internal static void Serialize(IEnumerable<CustomerArchive> archive, string fileName) 
{ 
     var serializer = new XmlSerializer(typeof(List<CustomerArchive>)); // Error 

     using (var stream = File.Create(fileName)) 
     { 
      using (var sw = new StreamWriter(stream)) 
      using (var writer = new XmlTextWriter(sw) 
      { 
       Indentation = 5, 
       Formatting = Formatting.Indented 
      }) 
      serializer.Serialize(writer, new List<CustomerArchive>(archive)); 
     } 
} 
+1

在哪条线上出现错误 –

+0

var serializer = new XmlSerializer(typeof(List ));在这一行.. :-( –

+1

什么是内部异常告诉你?继续内部异常,直到你到最后一个。 – Popo

回答

0

我觉得你有内部MyCustomer类的一些属性不能被XML Serializer序列化。例如,像通用Dictionary<>一样。

[XmlIgnore]属性放在这些属性上,然后重试。如果之后你的代码工作,你只需要做一些代理属性,将序列化到XML和没有任何问题。

+0

谢谢,[NonSerialized]没有工作,但[System.Xml.Serialization.XmlIgnore]做了我的工作 –

+0

好的赶上:)这就是我想要的。 – Alex