¿Es posible pasar una configuración de la aplicación en web.config a una clase C # común?

StackOverflow https://stackoverflow.com/questions/213509

  •  03-07-2019
  •  | 
  •  

Pregunta

¿Es posible pasar una configuración de la aplicación " cadena " en el web.config a una clase de C # Común?

¿Fue útil?

Solución

Por supuesto que es posible, pero lo que hay que tener en cuenta es que una clase diseñada correctamente (a menos que esté diseñada explícitamente para ASP.NET) no debería saber ni preocuparse de dónde proviene la información. Debería haber una propiedad (o método, pero las propiedades son la forma más '.NET' de hacer las cosas) que se establece con el valor de cadena desde la propia aplicación, en lugar de que la clase tome información directamente desde web.config.

Otros consejos

En cualquier clase puede usar ConfigurationManager.AppSettings [" KeyToSetting "] para acceder a cualquier valor en el elemento web.config (o app.config)

Si tiene valores de configuración que se utilizan en muchos lugares, considere desarrollar una clase de Configuración que resuma la carga real de los elementos de configuración y proporcione valores y conversiones fuertemente tipados, y valores potencialmente predeterminados.

Esta técnica localiza el acceso al archivo de configuración, lo que facilita el cambio de implementaciones más adelante (por ejemplo, almacén en el registro) y hace que los valores solo se tengan que leer del archivo una vez, aunque espero que la configuración El administrador también se implementaría de esta manera y leería todos los valores la primera vez que se usara y los proporcionaría desde una tienda interna en accesos posteriores. Creo que el beneficio real es un tipeo fuerte y conversiones únicas,

public static class ApplicationConfiguration
{
    private static DateTime myEpoch;
    public static DateTime Epoch
    {
       get
       {
          if (myEpoch == null)
          {
              string startEpoch = ConfigurationManager.AppSettings["Epoch"];
              if (string.IsNullOrEmpty(startEpoch))
              {
                 myEpoch = new DateTime(1970,1,1);
              }
              else
              {
                 myEpoch = DateTime.Parse(startEpoch);
              }
          }
          return myEpoch;   
       }
    }
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top