コード例 #1
0
        /// <summary>
        ///   <para>Creates the popup basher configuration object from the xml in the config file.</para>
        /// </summary>
        /// <param name="parent">
        ///   <para>Parent configuration tag representation.</para>
        /// </param>
        /// <param name="configContext">
        ///   <para>Context under which the configuration should be parsed.</para>
        /// </param>
        /// <param name="section">
        ///   <para>The section of the XML which is to be parsed.</para>
        /// </param>
        /// <returns>
        ///   <para>PopupBasherConfiguration object representing the XML-specified configuration.</para>
        /// </returns>
        protected object Create(object parent, object configContext, XmlNode section)
        {
            XmlSerializer serializer = null;

            serializer = new XmlSerializer(typeof(PopupBasherConfiguration));

            // now try for deserialization--remember, each of the config property classes is decorated with xml deserialization
            // attributes which will "automatically" put elements/attributes in class fields
            PopupBasherConfiguration config = (PopupBasherConfiguration)serializer.Deserialize(new XmlNodeReader(section));

            return(config);
        }
コード例 #2
0
        /// <summary>
        /// Initializes the configuration section by parsing the XML
        /// </summary>
        private static void Init()
        {
            try
            {
                if (null == myConfiguration)
                {
                    // Fix bug 21191: call Configuration.GetSection instead of ConfigurationManager.GetSection
                    // to read config file. ConfigurationManager.GetSection may throw ConfigurationErrorsException
                    // on .Net 4.0. Related KB: http://support.microsoft.com/?kbid=2580188
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                    if (config != null)
                    {
                        ConfigurationSection section = config.GetSection("PopupBasherConfiguration");
                        if (section != null)
                        {
                            XmlDocument xdoc = new XmlDocument()
                            {
                                XmlResolver = null
                            };
                            xdoc.LoadXml(section.SectionInformation.GetRawXml());
                            XmlNodeReader xreader = new XmlNodeReader(xdoc.DocumentElement);

                            XmlSerializer serializer = new XmlSerializer(typeof(PopupBasherConfiguration));
                            myConfiguration = (PopupBasherConfiguration)serializer.Deserialize(xreader);
                        }
                    }
                }
            }
            catch (ConfigurationErrorsException ex)
            {
                // use default configuration (happens in finally block)
                Tracing.WriteDebugTextError(Tracing.ComponentId.ExcelDriver, ex.ToString());
            }
            finally
            {
                // Sometimes GetSection returns null instead of throwing an exception, so regardless of exception catching, use
                // a finally block to check if configuration was loaded and load defaults if none was loaded.
                if (myConfiguration == null)
                {
                    // Couldn't load the config file, so set defaults
                    myConfiguration        = new PopupBasherConfiguration();
                    myConfiguration.Period = CHECKSTATUSPERIODDEFAULT;
                }
            }
        }