ToonSerializerWrapper

using PRTelegramBot.Interfaces;
using ToonNetSerializer;

namespace PRTelegramBot.Wrappers
{
    /// <summary>
    /// Сериализатор данных Toon.
    /// </summary>
    public class ToonSerializerWrapper : IPRSerializer
    {
        #region Поля и свойства

        /// <summary>
        /// Опции сериализации. 
        /// </summary>
        private readonly ToonDecodeOptions decodeOptions;

        /// <summary>
        /// Опции сериализации. 
        /// </summary>
        private readonly ToonOptions serializeOptions;

        #endregion

        #region IPRSerializator

        /// <inheritdoc />
        public T Deserialize<T>(string data)
        {
            return ToonNet.Decode<T>(data, decodeOptions);
        }

        /// <inheritdoc />
        public string Serialize<T>(T data)
        {
            return serializeOptions == null 
                ? ToonNet.Encode(data)
                : ToonNet.Encode(data, serializeOptions);
        }

        #endregion

        #region Конструкторы    

        /// <summary>
        /// Конструктор.    
        /// </summary>
        public ToonSerializerWrapper()
            { }

        /// <summary>
        /// Конструктор.    
        /// </summary>
        /// <param name="decodeOptions">Параметры десериализации.</param>
        public ToonSerializerWrapper(ToonDecodeOptions decodeOptions)
            : this(null, decodeOptions)
                { }

        /// <summary>
        /// Конструктор.    
        /// </summary>
        /// <param name="serializeOptions">Параметры сериализации.</param>
        public ToonSerializerWrapper(ToonOptions serializeOptions) 
            : this(serializeOptions, null) 
                { }

        /// <summary>
        /// Конструктор.    
        /// </summary>
        /// <param name="serializeOptions">Параметры сериализации.</param>
        /// <param name="decodeOptions">Параметры десериализации.</param>
        public ToonSerializerWrapper(ToonOptions serializeOptions, ToonDecodeOptions decodeOptions)
        {
            this.serializeOptions = serializeOptions;
            this.decodeOptions = decodeOptions;
        }

        #endregion
    }
}

Last updated