/// <summary>
        /// Serialises this object
        /// </summary>
        /// <param name="serializationType">The serialisation format.</param>
        /// <param name="pretty">Pretty print.</param>
        /// <returns>The serialised data.</returns>
        public string Serialize(ConfigSerializationType serializationType = ConfigSerializationType.Json, bool pretty = false)
        {
            switch (serializationType)
            {
            case ConfigSerializationType.Json:
                return(JsonConvert.SerializeObject(this, pretty ? Formatting.Indented : Formatting.None));

            case ConfigSerializationType.Yaml:
                return(new SerializerBuilder().Build().Serialize(this));

            default:
                throw new Exception("Only YAML and JSON serialization supported!");
            }
        }
        /// <summary>
        /// Serialises a given object using the passed serialisation type.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="obj"></param>
        /// <param name="serializationType"></param>
        /// <returns>The serialised object.</returns>
        public static string Serialize <T>(this T obj, ConfigSerializationType serializationType = ConfigSerializationType.Yaml)
        {
            switch (serializationType)
            {
            case ConfigSerializationType.Yaml:
                return(new SerializerBuilder().WithNamingConvention(new UnderscoredNamingConvention()).Build().Serialize(obj));

            case ConfigSerializationType.Json:
                return(JsonConvert.SerializeObject(obj, Formatting.Indented));

            case ConfigSerializationType.XML:
                return(XmlSerializer.SerializeToString(obj));

            default:
                throw new ArgumentOutOfRangeException(nameof(serializationType), "Invalid serialization type!");
            }
        }
 public string ToString(ConfigSerializationType serializationType = ConfigSerializationType.Yaml) => throw new NotImplementedException();