Pregunta

En un servicio de Net 3.5 (Windows), me gustaría para almacenar una pequeña colección de valores en el archivo de configuración. Básicamente, lo que necesito para permitir a los administradores agregar y quitar los valores de esta pequeña colección. ¿Qué necesito para agregar al archivo de configuración para almacenar una colección de valores pequeños, y cómo puedo leer la colección en C #?

Para aclarar, la colección Busco datos es la siguiente:

<Illegal Characters>
  <CustomCollection value="?"/>
  <CustomCollection value="#"/>
  <CustomCollection value=","/>
</Illegal Characters>
¿Fue útil?

Solución

Hay un buen artículo sobre la creación de un controlador de sección de configuración personalizada que carga los valores como una lista aquí .

Básicamente de su IConfigurationSectionHandler Crear método debería ser algo como esto:

public object Create(object parent, object configContext, XmlNode section)
{
    IList<string> illegal = new List<string>();
    XmlNodeList processesNodes= section.SelectNodes("CustomCollection");

    foreach (XmlNode child in processesNodes)
    {
        illegal.Add(child.Attributes["value"].InnerText);
    }
    return illegal;
}

Otros consejos

Como alternativa, se puede almacenar una sola cadena de caracteres no válidos como una expresión regular en su archivo de configuración. De esa manera usted no tiene que recorrer los caracteres para comprobar que éstos sean utilizados en una determinada cadena - que podría hacer una comparación basada en la expresión regular. Podría ahorrar un poco de la CPU y la complejidad.

Por supuesto, es más fácil de usar nodos XML individuales si los administradores van a editar el archivo directamente. Pero si están cambiando la lista de caracteres a través de la propia aplicación, una expresión regular puede ser bueno.

Si el número de valores es pequeña y los nombres asociados a ellos son fijos, debe ser capaz de almacenarlos en la sección de configuración appsettings y hacer referencia a ellos mediante el ConfigurationManager colección .AppSettings. Esto funciona bastante bien para pares de valores clave estándar. Si los datos es más compleja que eso, es posible que desee definir su propia sección de configuración y un asociado ConfigurationSectionHandler para analizar los datos en cualquier objeto personalizado que desee. También probablemente querrá poner en práctica un FileSystemWatcher para detectar cambios en el archivo de configuración y actualizar la configuración de la aplicación que se ejecuta a menos que sea aceptable para iniciar / detener el servicio con el fin de obtener la nueva configuración aplicada.

Voy a describir la forma en VB.NET, porque estoy seguro de la forma en C # es muy similar o igual en algunos casos. Abre el archivo settings.settings bajo Mi proyecto en el Explorador de soluciones. Añadir en los ajustes que desee, por ejemplo "OutputPath". Luego, en el código, hacer referencia a ella con

variable = My.Settings.OutputPath

' If a user modifiable setting, you can use:
My.Settings.OutputPath = variable
My.Settings.Save()
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top