public virtual void Deserialize(GenericReader reader) { var version = reader.GetVersion(); ProviderID = reader.ReadInt(); switch (version) { case 2: { Value = reader.ReadString(); _ValueHash = reader.ReadInt(); } break; case 1: { var seed = reader.ReadBool() ? StringCompression.Unpack(reader.ReadBytes()) : Encoding.UTF32.GetString(reader.ReadBytes()); Value = CryptoGenerator.GenString(ProviderID, seed ?? String.Empty); } break; case 0: { var seed = reader.ReadString(); Value = CryptoGenerator.GenString(ProviderID, seed ?? String.Empty); } break; } }