2009-04-17 9 views
26

Quelle est la bonne façon de récupérer la liste des « pages » par une classe qui hérite de System.Configuration.Section si j'utilisé un app.config comme ça?personnalisée app.config Config section Gestionnaire

<?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> 

Répondre

26

D'abord, vous ajoutez une propriété dans la classe qui étend la section:

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

Ensuite, vous devez faire une classe PageCollection. Tous les exemples que j'ai vus sont à peu près identiques donc il suffit de copier this one et de renommer "NamedService" en "Page".

Enfin ajouter une classe qui étend 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; 
     } 
    } 
} 

Voici quelques fichiers à partir d'un exemple d'implémentation:

+0

Des liens ont rompu au fil du temps – Hoppe

+0

@Hoppe si vous voulez une autre exemple d'implémentation je fait un ici: http://stackoverflow.com/a/33544322/1955317 – Squazz

3

De même, si vous créez fréquemment des sections de configuration, il existe le Configuration Section Designer, un concepteur de langage spécifique au domaine graphique pour la conception de sections de configuration.