public bool TryGetValue <T>(string key, out T value)
        {
            var lowerCaseKey = key.ToLower();

            if (dictionary.TryGetValue(lowerCaseKey, out var json))
            {
                if (typeof(T).IsEnum)
                {
                    string enumString = JsonSerializer.Deserialize <string>(json);
                    if (!EnumParser <T> .TryParse(enumString, out value))
                    {
                        value = default;
                        return(false);
                    }
                }
                else
                {
                    value = JsonSerializer.Deserialize <T>(json);
                }
                return(true);
            }
            else
            {
                value = default;
                return(false);
            }
        }
        public T GetValue <T>(string key, T defaultValue)
        {
            var lowerCaseKey = key.ToLower();

            if (dictionary.TryGetValue(lowerCaseKey, out var json))
            {
                if (typeof(T).IsEnum)
                {
                    string enumString = JsonSerializer.Deserialize <string>(json);
                    if (EnumParser <T> .TryParse(enumString, out T value))
                    {
                        return(value);
                    }
                }
                else
                {
                    return(JsonSerializer.Deserialize <T>(json));
                }
            }
            return(defaultValue);
        }