Typically, for version control, you can use the OptionalField attribute for newly added members, which can cause compatibility issues. During serialization, if a member has not been serialized, it leaves the member value as null, and does not throw an exception.
Also check out the IDeserializationCallback.OnDeserialization interface, which lets you customize deserialization.
source share