2009-03-26 15 views
14

La configuración de configuración en 3.5 me está volviendo loco ... ¡Ayuda! ;)Obteniendo la configuración desde web.config/app.config usando la biblioteca de clases

Tengo una biblioteca de clase (ADI con nombre), que necesita algunos ajustes de configuración del proyecto que la usa (como connectionstring, ubicaciones del sistema de archivos, etc.).

Quiero definir estas configuraciones en mi Windows Forms/Web Projects App.Config o Web.Config, como otras configuraciones.

Aquí es parte de mi app.config para mis aplicación de Windows Forms:

<applicationSettings> 
    <PhotoImportRobot.My.MySettings> 
     <setting name="ADIImageRoot" serializeAs="String"> 
     <value>C:\DataTemp\ADI\Original\</value> 
     </setting> 
     <setting name="ADIImageVariantsRoot" serializeAs="String"> 
     <value>C:\DataTemp\ADI\Variants\</value> 
     </setting> 
    </PhotoImportRobot.My.MySettings> 
</applicationSettings> 

¿Cómo accedo a eso de mi biblioteca de clases ??

yo probamos este:

System.Configuration.ConfigurationManager.AppSettings("ADIImageVariantsRoot") 

¿Qué hacer?

Respuesta

23

ajustes Si usted no está estructurada después, la sección de appSettings simplemente toma pares de valores clave:

<appSettings> 
    <add key="ADIImageRoot" value="C:\DataTemp\ADI\Original\" /> 
    <add key="ADIImageVariantsRoot" value="C:\DataTemp\ADI\Variants\" /> 
</appSettings> 

Esto le permitirá acceder a ellos a través del diccionario AppSettings:

ConfigurationManager.AppSettings["ADIImageVariantsRoot"] 

Como usted esperaría

Alternativamente, si necesita más estructura para su configuración (es decir, algo más que cadenas o una colección de configuraciones), puede buscar usando una sección de configuración propia, utilizando un ConfigurationSection y sus partes relevantes.

+1

Decidí pasar a usar las aplicaciones antiguas, y eso funciona. También escribí un contenedor para verificar si existe y lanzar un error si no es así. – Kjensen

+0

Sí, es probable que lanzar ArgumentNullException sea el camino a seguir si no se proporciona. –

2

Parece que está utilizando las cosas de Configuración integradas en el estudio visual. Esto genera una clase contenedora relacionada con el archivo, llamada, en su caso MySettings.

Puede escribir algo así como MySettings.Instance.ADIImageVariantsRoot. (Si hace clic en Mostrar todos los archivos en la caja de herramientas del proyecto, se le mostrará el archivo .settings.cs y se puede ver todos los detalles sangrientos)

+1

OP (y yo) quiero saber cómo leer la configuración de la biblioteca de clases. – Tuan

+0

@Code Blue: gracias por comentar. En ese caso, mueve el.la configuración (y el código generado seguirá) en dicha biblioteca de clases, pero asegúrese de replicar la configuración (si corresponde) que coloca en el app.config de la biblioteca en la aplicación app.config de su exe. (No hay una buena manera de que sincronice automáticamente los valores predeterminados a los proyectos externos) –

2

Añadir referencia System.web; añadir espacio de nombre de usuario y

using System.Web.Configuration;  

String webConfigValue; 
      webConfigValue = WebConfigurationManager.AppSettings["employeeDB"].ToString(); 

para leer el valor web.config

<appSettings> 
     <add key="employeeDB" value="Data Source=servername;Initial Catalog=employee;Persist Security Info=True;User ID=userid;Password=password;"/>   
</appSettings> 
1

para ApplicationSettings se debe utilizar:

[YourNamespace].Properties.Settings.Default.[YourSettingName] 

Esto proporciona una referencia fuertemente tipada a su configuración y devuelve el valor predeterminado si no está definido en el archivo web.config. Para AppSettings debe usar:

System.Web.Configuration.WebConfigurationManager.AppSettings 
Cuestiones relacionadas