Why does the DataContractSerializer bypass initializers?
Background:
The serialization formatter gets uninitialized instances of classes during deserialization. That is, instances where all fields are set to their default values. For reference types this will be null. That is why "authors" in this case causes a null reference exception. You have to create it in the property like the code you have commented out. By including this "lazy" initialization code for authors you can remove the field initializer. Also, you must change the constructor to use the Property and not the field direclty.