2009-04-17 10 views
26

Qual è il modo corretto per raccogliere l'elenco di "pagine" tramite una classe che eredita da System.Configuration.Section se ho usato un app.config come questo?Custom app.config Gestore sezione di configurazione

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 

    <configSections> 
    <section name="XrbSettings" type="Xrb.UI.XrbSettings,Xrb.UI" /> 
    </configSections> 

    <XrbSettings> 
    <pages> 
     <add title="Google" url="http://www.google.com" /> 
     <add title="Yahoo" url="http://www.yahoo.com" /> 
    </pages> 
    </XrbSettings> 

</configuration> 

risposta

26

In primo luogo si aggiunge una proprietà nella classe che si estende Sezione:

[ConfigurationProperty("pages", IsDefaultCollection = false)] 
[ConfigurationCollection(typeof(PageCollection), AddItemName = "add")] 
public PageCollection Pages { 
    get { 
     return (PageCollection) this["pages"]; 
    } 
} 

allora avete bisogno di fare una classe PageCollection. Tutti gli esempi che ho visto sono praticamente identici, basta copiare this one e rinominare "NamedService" in "Pagina".

Infine aggiungere una classe che estende ObjectConfigurationElement:

public class PageElement : ObjectConfigurationElement { 
    [ConfigurationProperty("title", IsRequired = true)] 
    public string Title { 
     get { 
      return (string) this["title"]; 
     } 
     set { 
      this["title"] = value; 
     } 
    } 

    [ConfigurationProperty("url", IsRequired = true)] 
    public string Url { 
     get { 
      return (string) this["url"]; 
     } 
     set { 
      this["url"] = value; 
     } 
    } 
} 

Ecco alcuni file da un esempio di implementazione:

+0

I collegamenti si sono interrotti nel tempo – Hoppe

+0

@Hoppe se si desidera un'altra implementazione di esempio, l'ho creata qui: http://stackoverflow.com/a/33544322/1955317 – Squazz

3

Inoltre, se ci si trova a creare sezioni di configurazione frequentemente, è disponibile lo Configuration Section Designer, un designer grafico di linguaggio specifico del dominio per la progettazione delle sezioni di configurazione.

Problemi correlati