2009-11-20 16 views
14

Soy un principiante de C# ejecutando .NET 3.5, y me gustaría almacenar un montón de valores predeterminados de la aplicación en App.config, ya que las configuraciones pueden variar según el entorno del servidor (por ejemplo, desarrollo, puesta en escena, producción). Lo que quiero hacer es similar a lo que se describe en this StackOverflow article, pero también quiero poder usar valores que no sean cadenas (por ejemplo, int, bool). Algo como esto (los valores son sólo algunos ejemplos de nombres, por cierto):Usando App.config para establecer variables fuertemente tipadas

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <applicationSettings> 
     <MyApp> 
      <setting name="InitText" serializeAs="String"> 
       <value>Hello</value> 
      </setting> 
      <setting name="StartAt" serializeAs="Integer"> 
       <value>5</value> 
      </setting> 
      <setting name="IsWeekend" serializeAs="Boolean"> 
       <value>True</value> 
      </setting> 
     </MyApp> 
    </applicationSettings> 
</configuration> 

alguien puede proporcionar un ejemplo de cómo hacer esto, y cómo recuperar los valores a través de C#? He visto muchos ejemplos que requieren el uso y, pero no estoy seguro si necesito esos elementos, y si es así, cómo crearlos.

Respuesta

28

¿Qué pasa con el uso del Application Settings architecture de .NET Framework. Puede tener un acceso fuertemente tipado a los valores predeterminados.

En un proyecto de aplicación para Windows, el archivo de configuración se crea automáticamente en la carpeta de recursos. A continuación, puede agregar la configuración de la aplicación que se conserva en el archivo App.config tal como lo mostró en su pregunta.

Por ejemplo:

int i = Settings.Default.IntSetting; 

bool b = Settings.Default.BoolSetting; 

Editar: Si el proyecto no contiene el archivo de configuración siempre se puede añadir uno añadiendo un nuevo elemento y luego elegir un archivo de configuración. (Haga clic con el botón derecho en el archivo del proyecto y haga lo siguiente: Agregar-> Nuevo elemento-> Archivo de configuración). En mi caso, lo llamé Configuración, pero puedes ponerle el nombre que quieras.

Después de agregar el archivo, visual studio abrirá el diseñador de configuraciones en el que puede agregar su configuración fuertemente tipada. Por lo que dijo, debe establecer la configuración en el ámbito de la Aplicación y no en el usuario. Luego crea el proyecto y deberías obtener acceso a una clase con el nombre del archivo.

+0

Creo que esto es lo que necesito, pero no puedo acceder a las variables a través de C#. Cuando escribo "Configuración" Intellisense no ve nada ... –

+1

No está realmente integrado en el framework, es más bien algo IDE. Cuando agrega un archivo '.settings' a su proyecto C#/VB, se usa para generar código para la clase' Configuración' que ajusta las configuraciones como propiedades del tipo apropiado, y hace todos los moldes necesarios, etc. –

+0

Gracias por la aclaración: lo aprecio. –

11
Boolean isWeekend = Convert.ToBoolean(ConfigurationManager.AppSettings["IsWeekend"]) 
+6

O Boolean.TryParse (...). http://msdn.microsoft.com/en-us/library/system.boolean.tryparse.aspx –

+8

si esto no falla la parte de las "variables fuertemente tipadas" de los requisitos, aún está almacenando una cadena en la aplicación .config –

+0

Sí, no quiero tener que refundir una cadena como el tipo correcto. –

-1

Parece que desea tener un <configSection> personalizado. Básicamente, funciona así:

-Crea una clase de configuración que tenga los valores predeterminados adecuados, etc., y configure una estructura de herencia agradable para que se cargue automáticamente en función de la configuración de su web.config. -add su sección de configuración para el web.config, especificando el "tipo" que cargará la configuración para la plataforma .NET sabrá qué inicializar

Usted puede encontrar todo tipo de información sobre el MSDN library al respecto. Los ejemplos son asp.net, pero también funcionan bien con las configuraciones de la aplicación.

+0

No necesita escribir una configuración personalizada para esto. – BrainSlugs83

Cuestiones relacionadas