2009-04-17 15 views
26

¿Cuál es la forma correcta de seleccionar la lista de "páginas" a través de una clase que hereda de System.Configuration.Section si utilicé un app.config como este?Custom app.config Controlador de sección de configuración

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

Respuesta

26

En primer lugar, añadir un alojamiento en la clase que se extiende Sección:

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

Luego hay que hacer una clase PageCollection. Todos los ejemplos que he visto son bastante idénticos así que solo copie this one y cambie el nombre de "NamedService" a "Página".

Por último añadir una clase que se extiende 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; 
     } 
    } 
} 

Éstos son algunos archivos de una implementación de ejemplo:

+0

Los enlaces se han roto en el tiempo – Hoppe

+0

@Hoppe si quieres otra implementación de ejemplo he hecho uno aquí: http://stackoverflow.com/a/33544322/1955317 – Squazz

3

Además, si se encuentra creando secciones de configuración con frecuencia, está el Configuration Section Designer, un diseñador gráfico de lenguaje específico del dominio para diseñar secciones de configuración.

Cuestiones relacionadas