/// <summary>
 /// gets an option as a string option
 /// </summary>
 /// <param name="configAnyTypeOption">any type config value option (json)</param>
 /// <returns>json of option value mapped to string value config option</returns>
 public ConfigStringOption GetConfigStringOption(ConfigAnyTypeOption configAnyTypeOption)
 {
     return(new ConfigStringOption()
     {
         Option = configAnyTypeOption.Option,
         Value = configAnyTypeOption.Value as string
     });
 }
        /// <summary>
        /// gets an option enum value as a typed enum value option
        /// </summary>
        /// <typeparam name="T">type of the enum value option wrapper from IConfigEnumOption</typeparam>
        /// <param name="configAnyTypeOption">any type config value option (json)</param>
        /// <returns>json of option value mapped to typed enum value option</returns>
        public T GetConfigEnumOption <T>(ConfigAnyTypeOption configAnyTypeOption)
            where T : IConfigEnumOption, new()
        {
            var r     = new T();
            var value =
                Newtonsoft.Json.JsonConvert.DeserializeObject <ConfigEnumOptionArray>(
                    configAnyTypeOption.Value.ToString());

            r.InitializeFrom(configAnyTypeOption.Option, value);
            return(r);
        }
        /// <summary>
        /// gets an option as an enum option
        /// </summary>
        /// <param name="configAnyTypeOption">any type config value option (json)</param>
        /// <returns>json of enum option value mapped to enum value config option</returns>
        public ConfigEnumOption GetConfigEnumOption(ConfigAnyTypeOption configAnyTypeOption)
        {
            var r = new ConfigEnumOption()
            {
                Option = configAnyTypeOption.Option
            };

            r.Value =
                Newtonsoft.Json.JsonConvert.DeserializeObject <ConfigEnumOptionArray>(
                    configAnyTypeOption.Value.ToString());
            return(r);
        }