keys - config file c#
subinstalaciones en el nodo de aplicaciĆ³n c# (2)
AFAIK puede implementar una sección personalizada fuera de los ajustes de la aplicación. Por ejemplo, los marcos como Autofac y SpecFlow utilizan este tipo de sesiones para admitir su propio esquema de configuración. Puede echar un vistazo a this artículo de MSDN para comprender cómo hacerlo. Espero que ayude.
Estoy usando el archivo app.config que se crea con una aplicación de consola y puedo leer el val1 de la clave1 utilizando el ConfigurationSettings.AppSettings["key1"].ToString()
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
<appSettings>
<add key="key1" value="val1" />
<add key="key2" value="val2" />
</appSettings>
</configuration>
pero tengo demasiadas claves y valores que quiero que sean categorizados.
Encontré algo que es difícil de usar en mi aplicación ya que quiero acceder a las teclas de manera similar a la anterior.
Mostrando todos los nodos y no puede leer un nodo sin obtener todos los nodos
por ejemplo lo que quiero hacer:
<appSettings>
<Section1>
<add key="key1" value="val1" />
</Section1>
<Section2>
<add key="key1" value="val1" />
<Section2>
</appSettings>
y si hay una forma de acceder a él mediante ConfigurationSettings.AppSettings["Section1"].["key1"].ToString()
Puede agregar secciones personalizadas en app.config sin escribir código adicional. Todo lo que tiene que hacer es "declarar" una nueva sección en el nodo configSections
como ese
<configSections>
<section name="genericAppSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</configSections>
y luego puede definir esta sección llenándola de claves y valores:
<genericAppSettings>
<add key="testkey" value="generic" />
<add key="another" value="testvalue" />
</genericAppSettings>
Para obtener el valor de una clave de esta sección, debe agregar dll System.Configuration
como referencia a su proyecto, agregar using
y usar el método GetSection
. Ejemplo:
using System.Collections.Specialized;
using System.Configuration;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
NameValueCollection test = (NameValueCollection)ConfigurationManager.GetSection("genericAppSettings");
string a = test["another"];
}
}
}
Lo bueno es que puedes hacer grupos de secciones fácilmente si necesitas esto:
<configSections>
<sectionGroup name="customAppSettingsGroup">
<section name="genericAppSettings" type="System.Configuration.AppSettingsSection, System.Configuration, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
// another sections
</sectionGroup>
</configSections>
<customAppSettingsGroup>
<genericAppSettings>
<add key="testkey" value="generic" />
<add key="another" value="testvalue" />
</genericAppSettings>
// another sections
</customAppSettingsGroup>
Si usa grupos, para acceder a las secciones debe acceder a ellas utilizando el formato {group name}/{section name}
:
NameValueCollection test = (NameValueCollection)ConfigurationManager.GetSection("customAppSettingsGroup/genericAppSettings");