/// <summary>
        /// Сериализовать.
        /// </summary>
        /// <param name="obj">Объект.</param>
        /// <returns>Сериализованное медиа.</returns>
        public byte[] SerializeToBytes(ISerializableObject obj)
        {
            if (obj == null)
            {
                return(null);
            }
            var serializer = GetSerializer(obj.GetTypeForSerializer());

            return(SerializationImplHelper.WithTypeId(serializer.SerializeToBytes(obj), serializer.TypeId));
        }
        /// <summary>
        /// Десериализовать.
        /// </summary>
        /// <param name="data">Данные.</param>
        /// <returns>Объект.</returns>
        public ISerializableObject Deserialize(string data)
        {
            if (data == null)
            {
                return(null);
            }
            (var sdata, var typeId) = SerializationImplHelper.ExtractTypeId(data);
            var serializer = GetSerializer(typeId);

            return(serializer.Deserialize(sdata));
        }