序列化派生只读 属性
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提供了更多的灵活性。
我正在将一个数据类型序列化为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提供了更多的灵活性。