/// <summary>
        /// Gibt einen Konfigurationswert zurück
        /// </summary>
        /// <param name="configurationName">Konfigurationswert</param>
        /// <param name="pluginName">PlugInName</param>
        /// <param name="userName">Benutzername</param>
        /// <param name="noCaching">Wenn true, wird kein Cache verwendet</param>
        /// <returns>Wert</returns>
        public T GetValue <T>(string configurationName, string pluginName, string userName, bool noCaching = false)
        {
            var returnValue = cacheService.Get <ConfigurationValue>(
                ConfigurationValue.GetKeyName(configurationName, pluginName, userName));

            if (returnValue == null || noCaching == true)
            {
                var value = configurationRepository.GetValue(pluginName, userName, configurationName);

                // If no configuration value exists, try to load a user independent setting
                if (string.IsNullOrWhiteSpace(value))
                {
                    value = configurationRepository.GetValue(pluginName, "", configurationName);
                }

                returnValue       = new ConfigurationValue(configurationName, pluginName, userName, value);
                returnValue.Value = CastConfigurationValue <T>(value);

                if (noCaching == false)
                {
                    cacheService.Set(returnValue);
                }
            }

            return((T)returnValue.Value);
        }
        /// <summary>
        /// Setzt einen Konfigurationswert
        /// </summary>
        /// <param name="configurationName">Name der Konfiguration</param>
        /// <param name="pluginName">PlugIn-Name</param>
        /// <param name="userName">Benutzername</param>
        /// <param name="value">Wert</param>
        public void SetValue <T>(string configurationName, string pluginName, string userName, T value)
        {
            object _value = value;

            if (_value != null)
            {
                if (value is bool || value is Boolean)
                {
                    _value = Convert.ToInt32(value).ToString();
                }
            }

            configurationRepository.SetValue(pluginName, userName, configurationName,
                                             _value == null ? null : _value.ToString());

            var configValue = cacheService.Get <ConfigurationValue>(
                ConfigurationValue.GetKeyName(configurationName, pluginName, userName));

            if (configValue != null)
            {
                configValue.Value = value;
            }
            else
            {
                cacheService.Set(new ConfigurationValue(configurationName, pluginName, userName, value));
            }
        }