/// <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); }
/// <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; } } }