序列化衍生只读
问题描述:
我序列化的数据类型为XML属性,并抛出一个异常:序列化衍生只读
System.Runtime.Serialization.InvalidDataContractException
德国的错误信息是:
Es ist keine "set"-Methode für die "DerivedProperty"-Eigenschaft im Typ "MyApp.Models.MyEntry" implementiert.
大致翻译,它告诉我在序列化期间发生错误,因为我的只读属性“DerivedProperty”没有“set”方法。但是我不会实现一个set方法,因为它是一个只读属性,MyEntry是一个仅用于序列化的模型(服务器上没有反序列化),可能是因为我非常固执并且讨厌这样糟糕的“解决方案”。
如何告诉.NET我的属性是只读的和/或我的模型是仅序列化的,所以异常消失?我的代码是:
[DataContract]
public class MyEntry {
internal string Property = null;
[DataMember]
public bool DerivedProperty {
get {
return Property == null;
}
}
}
答
有关于这在这里讨论:
Why are properties without a setter not serialized
总之,是的XmlSerializer的限制,DataContractSerializer提供了更多的灵活性。