序列化派生只读 属性

Serialize derived read-only property

我正在将一个数据类型序列化为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是一个只序列化的模型(在服务器上没有反序列化),可能是因为我很固执,讨厌这样糟糕"solutions".

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

[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提供了更多的灵活性。