views:

220

answers:

3

I am using .NET 3.5SP1 and DataContractSerializer to serialize a class. In SP1, they changed the behavior so that you don't have to include DataContract/DataMember attributes on the class and it will just serialize the entire thing. This is the behavior I am using, but now I need to ignore one property from the serializer. I know that one way to do this is to add the DataContract attribute to the class, and just put the DataMember attribute on all of the members that I want to include. I have reasons, though, that this will not work for me.

So my question is, is there an attribute or something I can use to make the DataContractSerializer ignore a property?

+2  A: 

IgnoreDataMemberAttribute?

Paul Ruane
A: 

Hey,

What you are saying is in conflict with what it says in the MSDN library at this location:

http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractserializer.aspx

I don't see any mention of the SP1 feature you mention.

Tony
You can find the doc here (3rd paragraph, 2nd sentence): http://msdn.microsoft.com/en-us/library/ms733127.aspx
NotDan
You're right about the link you posted though, I'm not sure why they don't mention it there, too.
NotDan
Thanks for showing me that! :)
Tony
+2  A: 

Additionally, DataContractSerializer will serialize items marked as [Serializable] and will also serialize unmarked types in .NET 3.5 SP1, to allow support for serializing anonymous types.

So, it depends on how you've decorated your class as to how to keep a member from serializing. If you used [DataContract], then remove the [DataMember] for the property. If you used [Serializable], then add [NonSerialized] in front of the field for the property, and if you haven't decorated your class, then you should add [IgnoreDataMember] to the property.

Doug