Come creare una sezione di configurazione personalizzata in app.config?

Voglio aggiungere una sezione di configurazione personalizzata nel mio file app.config . C’è un modo per farlo e come posso accedere a queste impostazioni nel mio programma. Di seguito è riportata la sezione di configurazione che voglio aggiungere alla mia app.config :

       

Crea società ConfigurationElement:

 public class Company : ConfigurationElement { [ConfigurationProperty("name", IsRequired = true)] public string Name { get { return this["name"] as string; } } [ConfigurationProperty("code", IsRequired = true)] public string Code { get { return this["code"] as string; } } } 

ConfigurationElementCollection:

 public class Companies : ConfigurationElementCollection { public Company this[int index] { get { return base.BaseGet(index) as Company ; } set { if (base.BaseGet(index) != null) { base.BaseRemoveAt(index); } this.BaseAdd(index, value); } } public new Company this[string responseString] { get { return (Company) BaseGet(responseString); } set { if(BaseGet(responseString) != null) { BaseRemoveAt(BaseIndexOf(BaseGet(responseString))); } BaseAdd(value); } } protected override System.Configuration.ConfigurationElement CreateNewElement() { return new Company(); } protected override object GetElementKey(System.Configuration.ConfigurationElement element) { return ((Company)element).Name; } } 

e ConfigurationSection:

 public class RegisterCompaniesConfig : ConfigurationSection { public static RegisterCompaniesConfig GetConfig() { return (RegisterCompaniesConfig)System.Configuration.ConfigurationManager.GetSection("RegisterCompanies") ?? new RegisterCompaniesConfig(); } [System.Configuration.ConfigurationProperty("Companies")] [ConfigurationCollection(typeof(Companies), AddItemName = "Company")] public Companies Companies { get { object o = this["Companies"]; return o as Companies ; } } } 

e devi anche registrare la tua nuova sezione di configurazione in web.config (app.config):

   

quindi carichi la tua configurazione con

 var config = RegisterCompaniesConfig.GetConfig(); foreach(var item in config.Companies) { do something .. } 

Dovresti controllare la serie in tre parti di Jon Rista sulla configurazione di .NET 2.0 su CodeProject.

  • Svelare i misteri della configurazione di .NET 2.0
  • Decodifica i misteri della configurazione di .NET 2.0
  • Cracking the mysteries of .NET 2.0 configuration

Altamente raccomandato, ben scritto ed estremamente utile!

Ti mostra chiaramente come scrivere le classi necessarie (derivanti da ConfigurationElement e / o ConfigurationSection ) per progettare le sezioni di configurazione personalizzate di cui hai bisogno.