因此,我一直在通過我們的代碼庫,我看到一些我們的DTO具有[DataMember]
和[IgnoreDataMember]
屬性的混合和匹配。沒有[數據成員]屬性與具有[IgnoreDataMember]屬性
過去,我們已經被告知如果我們不想在DTO中序列化某些東西,根本不要添加[DataMember]
屬性。然後我看到了其他屬性並做了一些挖掘,似乎明確指出該屬性不會被序列化。
現在我的問題是,哪個更好?添加[IgnoreDataMember]
或者不添加任何內容。
我問了一遍,似乎[IgnoreDataMember]
是從一切都被序列化的時代,你必須指定什麼應該忽略(我相信.Net 2)。然後他們將其改變爲相反的,你必須明確說明應該序列化什麼。現在看來你可以做到這一點。
還有:「IgnoreDataMemberAttribute屬性僅在與未標記類型一起使用時纔有效。如果在同一個類上使用'[DataContract]'和'[IgnoreDataMember]',後者將被忽略。 –
@MichaelEdenfield是迂腐的,'DataContractSerializer'默認爲*所有公共字段和屬性*(公共字段非常罕見);甚至有點含糊不清。例如,如果我們談論的是'NetDataContractSerializer',那麼它默認爲*所有字段*(公共和私人),但沒有屬性 –
我知道這是一箇舊線程,但昨天我遇到了一個問題,表明Edenfield先生說並不完全如此。 我有一個領域,4個屬性的類。所有4個屬性都轉換某種形式的數據(例如字節數組,字符串或其他形式)並將其寫入一個字段。我用DataContract屬性標記了該類,並只將該字段標記爲DataMember。但是,這樣解串器不會忽略這些屬性,而是將它們設置爲默認值(這會覆蓋該字段)。將[IgnoreDataMember]添加到解決問題的屬性中。所以它不會被忽略 –