为什么Xml Serializer要求属性可写?

时间:2011-02-23 00:37:23

标签: c# .net serialization xmlserializer

我有一些我希望序列化为xml的类型,但这些类型具有只读属性,如:

public List<Effect> Effects {get; private set;}

但是xml序列化程序要求这些属性是可写的。

  1. 不是xml序列化程序使用反射,所以实际上可以通过反射轻松设置这些属性,即使它们是只读的吗?

  2. 有没有解决方法,因为我不希望人们可以编辑这些类型,因此属性必须是只读的,但我也希望它们是xml可序列化的。

    < / LI>

1 个答案:

答案 0 :(得分:1)

这是不可能的,因为如MSDN

中所述
  

XML序列化是将对象的公共属性和字段转换为串行格式(在本例中为XML)以进行存储或传输的过程。

但您可以使用DataContractSerializer。这是Marc在SO上的答案的链接

Serializing private member data

<强>更新

您可以通过离开Auto Implemented属性来克服这种行为,并且具有以下内容:

 private List<Effect> _Effects;  

 public Effect()  
 {  
     _Effects= new List<Effects>();  
 }  

 public List<Effect> Effect
 {  
    get  
     {  
        return _Effects;         
     }  
 }