public virtual void Save(IServiceProvider serviceProvider)
        {
            ConfigurationSectionInfo info = null;
            ConfigurationNode        node = ServiceHelper.GetCurrentRootNode(serviceProvider);

            try
            {
                IConfigurationSource    configurationSource = GetConfigurationSource(serviceProvider);
                IConfigurationParameter parameter           = GetConfigurationParameter(serviceProvider);

                info = GetConfigurationSectionInfo(serviceProvider);
                if (null != info && !string.IsNullOrEmpty(info.SectionName))
                {
                    if (null != info.Section)
                    {
                        configurationSource.Add(parameter, info.SectionName, info.Section);
                    }
                    else
                    {
                        configurationSource.Remove(parameter, info.SectionName);
                    }
                }
            }
            catch (Exception e)
            {
                ServiceHelper.LogError(serviceProvider, info != null ? info.Node : node, e);
            }
        }
        /// <summary>
        /// Builds the currently defined configuration in design time.
        /// </summary>
        /// <param name="serviceProvider">The a mechanism for retrieving a service object; that is, an object that provides custom support to other objects.</param>
        /// <param name="dictionaryConfigurationSource">The <see cref="DictionaryConfigurationSource"/> to save the configuration.</param>
        public void BuildConfigurationSource(IServiceProvider serviceProvider, DictionaryConfigurationSource dictionaryConfigurationSource)
        {
            if (null == dictionaryConfigurationSource)
            {
                throw new ArgumentNullException("dictionaryConfigurationSource");
            }

            ConfigurationSectionInfo info = GetConfigurationSectionInfo(serviceProvider);

            if (null != info && null != info.Section)
            {
                dictionaryConfigurationSource.Add(info.SectionName, info.Section);
            }
        }
        public void Open(IServiceProvider serviceProvider)
        {
            IConfigurationSource         configurationSource = GetConfigurationSource(serviceProvider);
            ConfigurationApplicationNode appNode             = ServiceHelper.GetCurrentRootNode(serviceProvider);

            try
            {
                ConfigurationSectionInfo info = GetConfigurationSectionInfo(serviceProvider);
                if (null != info)
                {
                    ConfigurationSection section = configurationSource.GetSection(info.SectionName);
                    OpenCore(serviceProvider, appNode, section);
                }
            }
            catch (Exception e)
            {
                ServiceHelper.LogError(serviceProvider, appNode, e);
            }
        }