示例#1
0
        /// <summary>
        /// Deserialize the xml elements to PluginSettings put into the private settings dictionary.
        /// </summary>
        /// <param name="parentElement"></param>
        private void DeserializeSettings(XElement parentElement, DeserializeDefaultOptions options = null)
        {
            if (parentElement == null)
            {
                return;
            }

            var elements = parentElement.Elements()
                           .Where(el => el.Name.LocalName != "client" &&
                                  el.Name.LocalName != "encrypt");

            foreach (var element in elements)
            {
                PluginSetting setting = new PluginSetting(this, element);

                if (!String.IsNullOrEmpty(setting.Key))
                {
                    if (this.settings.ContainsKey(setting.Key))
                    {
                        throw new ArgumentException("Key already exists in settings.", setting.Key);
                    }
                    SetDefaultAttributes(setting, element, options);
                    this.settings.Add(setting.Key, setting);
                }
            }
        }
示例#2
0
        /// <summary>
        /// Sets default attributes on the given setting. If the given element contains the attribute, then it is not overridden.
        /// </summary>
        /// <param name="setting">The setting to set the values for.</param>
        /// <param name="element">The xml element (used to check if the attribute exists).</param>
        /// <param name="options">The default options.</param>
        private void SetDefaultAttributes(PluginSetting setting, XElement element, DeserializeDefaultOptions options)
        {
            if (options == null)
            {
                return;
            }

            if (options.IsClientSetting)
            {
                var attribute = element.Attribute("client");
                if (attribute == null)
                {
                    setting.IsClientSetting = true;
                }
            }
            if (options.IsEncryptedValue)
            {
                var attribute = element.Attribute("encrypt");
                if (attribute == null)
                {
                    setting.IsEncryptedSetting = true;
                }
            }
        }