標籤:序列化 entity href 成員 ber XML exception name sre
背景今天在使用:C# Json 序列化與還原序列化
還原序列化的時候出現了以下的錯誤資訊。
System.Runtime.Serialization.SerializationException: 資料合約類型“TestEntity”無法還原序列化,由於未找到必需的資料成員“multipleChoice, runTimeDisplayColumns”。在 System.ComponentModel.ReflectPropertyDescriptor.SetValue(Object component, Object value)
詳細原因是:我在還原序列化的實體類中新加了兩個屬性:
private bool multipleChoice; /// <summary> /// 協助引擎是否同意多選 /// </summary> [XmlIgnore] [Browsable(false)] public bool MultipleChoice { get { return multipleChoice; } set { multipleChoice = value; } } private string runTimeDisplayColumns; /// <summary> /// 協助引擎執行時顯示的列 /// </summary> [XmlIgnore] [Browsable(false)] public string RunTimeDisplayColumns { get { return runTimeDisplayColumns; } set { runTimeDisplayColumns = value; } }
在使用之前儲存的Json串還原序列化的時候,新增的兩個兩個屬性。沒有相應的值,所以報出了上面的錯誤。
解決方案:
[DataContract]public class TestEntity{private bool multipleChoice; /// <summary> /// 協助引擎是否同意多選 /// </summary> [XmlIgnore] [Browsable(false)][DataMember(IsRequired = false)] public bool MultipleChoice { get { return multipleChoice; } set { multipleChoice = value; } } private string runTimeDisplayColumns; /// <summary> /// 協助引擎執行時顯示的列 /// </summary> [XmlIgnore] [Browsable(false)][DataMember(IsRequired = false)] public string RunTimeDisplayColumns { get { return runTimeDisplayColumns; } set { runTimeDisplayColumns = value; } }}
通過DataMember(IsRequired = false)屬性工作表面此屬性。不是必須的。
這種話。保證了在還原序列化的時候。即使JSON串內缺少該屬性的定義能正常還原序列化。
小註:
在屬性上加入DataMember(IsRequired = false)後。相應的類上必須加入 [DataContract]標識。
C# Json還原序列化 資料合約類型 無法還原序列化 由於未找到必需的資料成員