2013-01-20 28 views
3

有什麼辦法可以防止DataContractSerializer的反序列化忽略缺失值並繼續反序列化其餘數據,而不是放棄一切,拋出異常並返回NULL如果只有一個值丟失,DataContractSerializer反序列化完全失敗

我正在積極構建應用程序,所以很自然地,它的對象會相當頻繁地添加新的字段,並且隨着它越來越多,每次獲取任何對象類型時必須重新輸入所有數據的痛苦越大一個額外的領域。

回答

1

您可以使用DataMember屬性的IsRequired屬性。

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datamemberattribute_properties.aspx

實施例:

[DataContract] 
public class Data 
{ 
    [DataMember] 
    public string Required { get; set; } 

    [DataMember(IsRequired=false)] 
    public string? NotRequired { get; set; } 
} 
+0

如果'[數據成員]'屬性指定了IsRequired屬性*不需要*除非IsRequired明確設置爲真。請參閱https://msdn.microsoft.com/zh-cn/library/aa347792(v=vs.110).aspx - 「.. DataMemberAttribute屬性具有IsRequired屬性(*默認爲false *)。」在上面的例子中,DataContractSerializer的* * * Required和NotRequired屬性*不是必需的*。 – user2864740