所以我一直在查看我们的代码库,发现一些我们的DTO使用了混合的[DataMember]
和[IgnoreDataMember]
属性。
过去,我们被告知如果不想将DTO序列化,则简单地不添加[DataMember]
属性。然后我看到了另一个属性,并进行了一些挖掘,似乎这明确指出该属性不会被序列化。
现在我的问题是哪个更好?添加[IgnoreDataMember]
还是什么都不添加。
我已经问过身边的人,似乎[IgnoreDataMember]
是从所有内容都需要序列化并且你必须声明应该忽略什么(我相信在.Net 2中)的时代开始的。然后他们反过来将其改为必须明确说明什么应该被序列化。现在似乎两者都可以。
[DataContract]
和[IgnoreDataMember]
,则后者会被忽略。 - Michael EdenfieldDataContractSerializer
默认序列化所有公共字段和属性(公共字段非常罕见);即使如此,这还是有点模糊不清。例如,如果我们谈论的是NetDataContractSerializer
,那么它默认序列化所有字段(包括私有字段),但不包括属性。 - Marc Gravell