我有一些我希望序列化为xml的类型,但这些类型具有只读属性,如:
public List<Effect> Effects {get; private set;}
但是xml序列化程序要求这些属性是可写的。
不是xml序列化程序使用反射,所以实际上可以通过反射轻松设置这些属性,即使它们是只读的吗?
有没有解决方法,因为我不希望人们可以编辑这些类型,因此属性必须是只读的,但我也希望它们是xml可序列化的。
< / LI> 醇>答案 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;
}
}