Una opción para usted es usar un objeto de configuración para contener valores predeterminados para cualquier configuración. Entonces, en el constructor del objeto de configuración, podría intentar anular los valores de configuración predeterminados con valores de alguna parte, como app.config, una tabla de configuración de base de datos, etc.
Esto es útil para varios propósitos:
- Las herramientas de prueba de unidades (como nUnit) requieren una configuración especial para acceder a app.config.
- La existencia del archivo app.config no es necesaria ya que usará los valores predeterminados (que parece ser su objetivo).
- Puede ayudar a garantizar valores de configuración de seguridad de tipo.
Un ejemplo sencillo:
public class MyConfiguration
{
private string _defaultValue1 = "Value1";
private int _defaultValue2 = 22;
public string Value1
{
get
{
return _defaultValue1;
}
}
public int Value2
{
get
{
return _defaultValue2;
}
}
#region cnstr
public MyConfiguration()
{
LoadValuesFromConfigurationXml();
}
#endregion
public static MyConfiguration GetConfig()
{
// Optionally Cache the config values in here... caching code removed
// for simplicity
return new MyConfiguration();
}
internal void LoadValuesFromConfigurationXml()
{
int tempInt;
string value = ConfigurationManager.AppSettings["Value1"];
if (!String.IsNullOrEmpty(value))
{
_defaultValue1 = value;
}
value = ConfigurationManager.AppSettings["Value2"];
if (!String.IsNullOrEmpty(value))
{
if (int.TryParse(value, out tempInt))
{
_defaultValue2 = tempInt;
}
}
}
}
Para acceder a los valores de configuración utilizan los:. MyConfiguration.GetConfig() Valor1
Espero que esto ayude, Max
Algunas configuraciones son solo para fines de desarrollo, no de configuración de implementación. Esta funcionalidad aún es necesaria. – rjarmstrong
bien, hay varias maneras de hacerlo entonces. Mi opinión es que las constantes codificadas en una clase de configuración (estática) son mucho más rápidas en ese caso, en comparación con obtener valores del archivo de configuración. Debido a que los recursos integrados necesitan una recompilación para cambiar los valores, no es una pérdida tener una clase que deba recompilarse después de cambiar algunos valores en ella. Otra técnica para hacer esto es proporcionar valores predeterminados para los valores que no se encuentran en el archivo de configuración: no es necesario especificar los valores para la implementación y se pueden anular en el entorno de desarrollo utilizando un archivo de recursos no incorporado ... – zappan
¿Cómo puedo tener un solo exe que se ejecutará en todos los frameworks .net? ¿Hay alguna forma de incrustar las cadenas app.config dentro del propio exe? –