Serialization in .Net 3.5 SP1
Note: This post refers to .NET Framework for Windows only, and not for the cross-platform .NET Core or simply .NET as it is re-branded in 2020. This means this post is outdated for newer version of .NET
In .Net 3.5 SP1 it is now possible to serialize any object that has a default constructor without decorating it with [DataContract] or [Serializable].
Developers have these choices now when serializing objects:
- Implicit serialization – requires public default constructor and only serialize public read/write fields
- Use the [Serializable] attribute
- Use [DataContract] and [DataMember] attributes
- Implement the ISerializable interface
I must say, that I’m not keen on this new feature. I prefer explicit serialization to implicit serialization. I predict that implicit serialization of entire object graphs will cause performance problems for many .Net developers in the years to come. This could also be a good thing as I am a consultant 😉
Aaron Skonnard has a more detailed blog post about the new serialization features in .Net 3.5 SP1.
Comments