System.Configuration
System.Configuration.ConfigurationSection
static void Main(string[] args) { var settings = CustomConfig.Settings; var someString = settings.SomeString; var someInteger = settings.SomeInteger; foreach (EmailRecipient item in settings.EmailRecipients) { Debug.Print(item.AddressExt); } }
using System; using System.Configuration; using System.Diagnostics; namespace ConsoleApplication1 { public class CustomConfig : ConfigurationSection { /*== Singleton Members ==================================================================*/ /* Prevent instantiation of this class -- except via static constructor. */ private CustomConfig() { } static CustomConfig() { try { Settings = ConfigurationManager.GetSection("CustomConfigGroup/CustomConfig") as CustomConfig; } catch (Exception ex) { var s = ex.Recurse(); Debug.Print(s); throw; } } public static CustomConfig Settings { get; private set; } /*== Instance Members ===================================================================*/ [ConfigurationProperty("someInteger", DefaultValue = 20, IsRequired = false)] [IntegerValidator(MinValue = 1, MaxValue = 100)] public int SomeInteger { get { return (int)this["someInteger"]; } set { this["someInteger"] = value; } } [ConfigurationProperty("someString", IsRequired = true)] [StringValidator(InvalidCharacters = "~!@#$%^&*()[]{}/;’\"|\\", MaxLength = 256)] public string SomeString { get { return (string)this["someString"]; } set { this["someString"] = value; } } [ConfigurationProperty("font")] public FontElement Font { get { return (FontElement)this["font"]; } set { this["font"] = value; } } [ConfigurationProperty("emailRecipients")] public EmailRecipientCollection EmailRecipients { get { return (EmailRecipientCollection)this["emailRecipients"]; } set { this["emailRecipients"] = value; } } } /*===========================================================================================*/ 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; } } } /*===========================================================================================*/ public class EmailRecipient : ConfigurationElement { [ConfigurationProperty("name", IsRequired=false)] public string Name { get { return (string)this["name"]; } set { this["name"] = value; } } [ConfigurationProperty("address", IsRequired = true, IsKey = true)] public string Address { get { return (string)this["address"]; } set { this["address"] = value; } } public string AddressExt { get { if (string.IsNullOrWhiteSpace(Name)) return Address; return Name + " <" + Address + ">"; } } } /*===========================================================================================*/ public class EmailRecipientCollection : ConfigurationElementCollection { public EmailRecipient this[int index] { get { return (EmailRecipient)BaseGet(index);} set { if (BaseGet(index) != null) BaseRemoveAt(index); BaseAdd(index, value); } } public void Add(EmailRecipient item) { BaseAdd(item); } public void Clear() { BaseClear(); } protected override ConfigurationElement CreateNewElement() { return new EmailRecipient(); } protected override object GetElementKey(ConfigurationElement item) { return ((EmailRecipient)item).Address; } public void Remove(EmailRecipient item) { BaseRemove(item.Address); } public void RemoveAt(int index) { BaseRemoveAt(index); } public void Remove(string name) { BaseRemove(name); } } /*===========================================================================================*/ public class EmailRecipientsConfigurationSection : ConfigurationSection { [ConfigurationProperty("EmailRecipients", IsDefaultCollection=false)] [ConfigurationCollection(typeof(EmailRecipientCollection), AddItemName="add", ClearItemsName="clear",RemoveItemName="remove")] public EmailRecipientCollection EmailRecipients { get { return (EmailRecipientCollection)base["EmailRecipients"]; } } } }
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="CustomConfigGroup"> <section name="CustomConfig" type="ConsoleApplication1.CustomConfig, ConsoleApplication1"/> </sectionGroup> </configSections> <CustomConfigGroup> <CustomConfig someInteger="5" someString="Hello world"> <font name="TimesNewRoman" size="18"/> <emailRecipients> <add name="Patrick Jasinski" address="patrick.jasinski@soltech.net" /> <add name="Rob Farmer" address="rob.farmer@soltech.net" /> </emailRecipients> </CustomConfig> </CustomConfigGroup> </configuration>
ScrewTurn Wiki version 3.0.1.400. Some of the icons created by FamFamFam. Except where noted, all contents Copyright © 1999-2024, Patrick Jasinski.