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?
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.