序列化派生的只读属性

时间:2015-02-10 12:13:28

标签: c# serialization

我将数据类型序列化为XML,并抛出异常:

System.Runtime.Serialization.InvalidDataContractException

德语错误信息是:

Es ist keine "set"-Methode für die "DerivedProperty"-Eigenschaft im Typ "MyApp.Models.MyEntry" implementiert.

粗略翻译,它告诉我序列化期间发生了错误,因为我的只读属性" DerivedProperty"没有"设置"方法。但是我没有实现set方法,因为它是一个只读属性,MyEntry只是一个序列化模型(在服务器上没有反序列化),可能因为我很顽固而且讨厌这么糟糕#34 ;溶液"

如何告诉.NET我的属性是只读的和/或我的模型是仅序列化的,所以异常消失了?我的代码是:

[DataContract]
public class MyEntry {
    internal string Property = null;
    [DataMember]
    public bool DerivedProperty {
        get {
            return Property == null;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

这里有一个讨论:

Why are properties without a setter not serialized

总之,它是XmlSerializer的一个限制,DataContractSerializer提供了更大的灵活性。