I took the code from this example.
http://msdn.microsoft.com/en-us/library/2tw134k3.aspx
What is interesting to me (and I'm watching all over the Internet today) ... How can you do this in an external (separate) file.
The idea I'm going to do is:
<configuration> <configSections> <sectionGroup name="pageAppearanceGroup"> <section name="pageAppearance" type="HelperAssembly.Configuration.PageAppearanceSection,HelperAssembly" allowLocation="true" allowDefinition="Everywhere" /> </sectionGroup> </configSections> <pageAppearanceGroup fileName="SomeSeparateFile.config"/> </configuration>
..................
The above does not work (of course).
Below is my copy / paste of the ms article mentioned above. And it was fully functional when I inserted it here.
//START HelperAssembly.csproj namespace HelperAssembly.Configuration { using System; using System.Collections; using System.Text; using System.Configuration; using System.Xml; public class PageAppearanceSection : ConfigurationSection { // Create a "remoteOnly" attribute. [ConfigurationProperty("remoteOnly", DefaultValue = "false", IsRequired = false)] public Boolean RemoteOnly { get { return (Boolean)this["remoteOnly"]; } set { this["remoteOnly"] = value; } } // Create a "font" element. [ConfigurationProperty("font")] public FontElement Font { get { return (FontElement)this["font"]; } set { this["font"] = value; } } // Create a "color element." [ConfigurationProperty("color")] public ColorElement Color { get { return (ColorElement)this["color"]; } set { this["color"] = value; } } } // Define the "font" element // with "name" and "size" attributes. public class FontElement : ConfigurationElement { [ConfigurationProperty("name", DefaultValue = "Arial", IsRequired = true)] [StringValidator(InvalidCharacters = " ~!@ #$%^&*()[]{}/;'\"|\\", MinLength = 1, MaxLength = 60)] public String Name { get { return (String)this["name"]; } set { this["name"] = value; } } [ConfigurationProperty("size", DefaultValue = "12", IsRequired = false)] [IntegerValidator(ExcludeRange = false, MaxValue = 24, MinValue = 6)] public int Size { get { return (int)this["size"]; } set { this["size"] = value; } } } // Define the "color" element // with "background" and "foreground" attributes. public class ColorElement : ConfigurationElement { [ConfigurationProperty("background", DefaultValue = "FFFFFF", IsRequired = true)] [StringValidator(InvalidCharacters = " ~!@ #$%^&*()[]{}/;'\"|\\GHIJKLMNOPQRSTUVWXYZ", MinLength = 6, MaxLength = 6)] public String Background { get { return (String)this["background"]; } set { this["background"] = value; } } [ConfigurationProperty("foreground", DefaultValue = "000000", IsRequired = true)] [StringValidator(InvalidCharacters = " ~!@ #$%^&*()[]{}/;'\"|\\GHIJKLMNOPQRSTUVWXYZ", MinLength = 6, MaxLength = 6)] public String Foreground { get { return (String)this["foreground"]; } set { this["foreground"] = value; } } } } namespace HelperAssembly.Configuration { using System; using System.Configuration; public static class ConfigurationRetriever { public static PageAppearanceSection RetrievePageAppearanceSection1() { PageAppearanceSection config = (PageAppearanceSection)System.Configuration.ConfigurationManager.GetSection("pageAppearanceGroup/pageAppearance"); return config; } } } //START ConsoleApplication1.csproj using System; using HelperAssembly.Configuration; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { try { PageAppearanceSection pas = ConfigurationRetriever.RetrievePageAppearanceSection1(); if (null != pas) { Console.WriteLine(pas.Color.Foreground); Console.WriteLine(pas.Color.Background); } } catch (Exception ex) { Exception innerException = ex; while (null != innerException) { Console.WriteLine(innerException.Message); Console.WriteLine("\n\r"); Console.WriteLine(innerException.StackTrace); Console.WriteLine("\n\r"); innerException = innerException.InnerException; } } Console.WriteLine("Press Enter"); Console.ReadLine(); } } } //XML for config file that works with the above code <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="pageAppearanceGroup"> <section name="pageAppearance" type="HelperAssembly.Configuration.PageAppearanceSection,HelperAssembly" allowLocation="true" allowDefinition="Everywhere" /> </sectionGroup> </configSections> <pageAppearanceGroup> <pageAppearance remoteOnly="true"> <font name="TimesNewRoman" size="18"/> <color background="DEFDEF" foreground="ABCABC"/> </pageAppearance> </pageAppearanceGroup> </configuration>
source share