@Horusiath In my example, when I once serialize my object with two properties (string and int, Step 1), and then I add a new property to the class I cannot have my object deserialized (steps 3, 4, 5). Adding a new field only worked for a string property at the end of class (step 2).
But if the order and type of fields matters as you said, then it makes some sense why they are not deserialized properly.
Receive<SomeMessage<T>>();
Error
with an InvalidCastException