所以我一直在浏览我们的代码库,并且我看到一些我们的DTO具有[DataMember]
和[IgnoreDataMember]
属性的混合和匹配。
过去,我们被告知如果我们不希望序列化DTO中的某些内容,只需添加[DataMember]
属性即可。然后我看到了另一个属性并进行了一些挖掘,似乎这明确表明该属性不会被序列化。
现在我的问题是,哪个更好?添加[IgnoreDataMember]
或不添加任何内容。
我已经四处询问,似乎[IgnoreDataMember]
来自所有序列化的日子,你必须决定应该忽略什么(我相信.Net 2)。然后他们将其更改为反向,您必须明确说明应该序列化的内容。现在看来你可以做到这两点。
答案 0 :(得分:50)
我已经四处询问,似乎[IgnoreDataMember]来自所有序列化的日子,你必须决定应该忽略什么(我相信.Net 2)。然后他们将其更改为反向,您必须明确说明应该序列化的内容。
实际上这并不完全正确; IIRC一直都是:
[DataContract]
,则只会将标记为[DataMember]
的成员视为[DataContract]
,则默认为所有内容,但您可以使用[IgnoreDataMember]
我通常只省略[DataMember]
我不想序列化的事情,但在很多方面[IgnoreDataMember]
更明确 - 主要是为了维护者的利益。它说“我故意没有序列化这个”,而不是“也许我知道这不是序列化的,但也许我只是忘了添加属性”。
要么工作。