public void SimpleParentUserTestDeserializeBase(byte[] Result, SimpleParentUserInfo Value, BaseOptionInfo SerializerOptions) { //in this example server side has SimpleUserInfo //server side has Id, Name, Family //and the client side has SimpleUserOldStructureInfo //client side has Id, Age, BirthDate ,Name //new structure of models var newStructureModels = BinarySerializer.GetStructureModels(SerializerOptions); //my old deserializer var myDeserializer = new BinaryDeserializer(); myDeserializer.Options = new BinaryGo.Helpers.BaseOptionInfo(); #region VersionChangedControl //generate type myDeserializer.Options.GenerateType <SimpleParentUserOldStructureInfo>(); //add model renamed myDeserializer.AddMovedType(myDeserializer.GetStrcutureModelName(typeof(SimpleParentUserInfo)), typeof(SimpleParentUserOldStructureInfo)); //build new structure to old structure myDeserializer.BuildStructure(newStructureModels); #endregion var result = myDeserializer.Deserialize <SimpleParentUserOldStructureInfo>(Result); Assert.True(result.IsEquals(Value)); //now serialize from client side and deserialize from server side happen result.Passport = "AV12345678"; BinarySerializer binarySerializer = new BinarySerializer(myDeserializer.Options); var resultSerialized = binarySerializer.Serialize(result); var resultDeserialized = myDeserializer.Deserialize <SimpleParentUserOldStructureInfo>(resultSerialized); Assert.True(resultDeserialized.IsEquals(Value)); }