DataContracts and DataMembers

后端 未结 2 1647
小蘑菇
小蘑菇 2021-02-13 11:59

Are there any ways to tell WCF to serialize the whole class when it returns? Do I literally have to add DataMember to every property?

2条回答
  •  猫巷女王i
    2021-02-13 12:25

    Since .NET 3.5 SP1, you don't have to do this anymore.

    If you don't have any [DataContract] and [DataMember] attributes, the DataContractSerializer class will behave like the old XmlSerializer: it will serialize all public read/write properties that are listed in the class.

    You do lose a few things in the process though:

    • since you don't have [DataMember] attributes, you cannot define an order of the fields anymore - they'll be serialized in the order of appearance

    • you cannot omit a public property (since that would require [DataMember] on all other properties/fields)

    • you cannot define a property to be Required (that would be on the [DataMember] attribute again)

    • your class now needs to have a public, parameter-less constructor (usually not needed for data contracts)

    Read all about it in detail from Aaron Skonnard at Pluralsight.

提交回复
热议问题