protected void SetPropertyOrDefault(string value, [CallerMemberName] string key = null, bool silent = false)
        {
            var lowerKey = key.ToLower();

            var hasKey = ParameterStorage.ContainsKey(lowerKey);

            if (string.IsNullOrWhiteSpace(value))
            {
                if (!hasKey)
                {
                    return;
                }
                ParameterStorage.Remove(lowerKey);
                if (!silent)
                {
                    Refresh(key);
                }
                return;
            }

            if (hasKey)
            {
                if (ParameterStorage[lowerKey] == value)
                {
                    return;
                }
                ParameterStorage[lowerKey] = value;
                if (!silent)
                {
                    Refresh(key);
                }
                return;
            }

            ParameterStorage.Add(lowerKey, value);
            if (!silent)
            {
                Refresh(key);
            }
        }
 protected string GetPropertyOrDefault([CallerMemberName] string key = null)
 {
     key = key.ToLower();
     return(ParameterStorage.ContainsKey(key) ? ParameterStorage[key] : null);
 }