c# - editar - ¿Cómo verificar si existe una clave appSettings?
editar app config c# (7)
Creo que la expresión LINQ puede ser la mejor:
const string MyKey = "myKey"
if (ConfigurationManager.AppSettings.AllKeys.Any(key => key == MyKey))
{
// Key exists
}
¿Cómo verifico si hay una configuración de aplicación disponible?
es decir, app.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<add key ="someKey" value="someValue"/>
</appSettings>
</configuration>
y en el archivo de código
if (ConfigurationManager.AppSettings.ContainsKey("someKey"))
{
// Do Something
}else{
// Do Something Else
}
Las opciones superiores dan flexibilidad a todas las formas, si conoce el tipo de clave intente analizarlas bool.TryParse(ConfigurationManager.AppSettings["myKey"], out myvariable);
Si la clave que está buscando no está presente en el archivo de configuración, no podrá convertirla en una cadena con .ToString () porque el valor será nulo y obtendrá una "Referencia del objeto no configurada". a una instancia de un objeto "error". Lo mejor es primero ver si el valor existe antes de tratar de obtener la representación de cadena.
if (!String.IsNullOrEmpty(ConfigurationManager.AppSettings["myKey"]))
{
String myKey = ConfigurationManager.AppSettings["myKey"].ToString();
}
O, como Code Monkey sugirió:
if (ConfigurationSettings.AppSettings["myKey"] != null)
{
// Now do your magic..
}
Valor predeterminado devuelto de forma segura a través de genéricos y LINQ.
public T ReadAppSetting<T>(string searchKey, T defaultValue)
{
if (ConfigurationManager.AppSettings.AllKeys.Any(key => key == searchKey))
{
try { // see if it can be converted
var converter = TypeDescriptor.GetConverter(typeof(T));
if (converter != null) {
defaultValue = (T)converter.ConvertFromString(ConfigurationManager.AppSettings.GetValues(searchKey).First());
}
} catch { } // nothing to do, just return default
}
return defaultValue;
}
Utilizado de la siguiente manera:
string LogFileName = ReadAppSetting("LogFile","LogFile");
double DefaultWidth = ReadAppSetting("Width",1280.0);
double DefaultHeight = ReadAppSetting("Height",1024.0);
Color DefaultColor = ReadAppSetting("Color",Colors.Black);
var isAlaCarte = ConfigurationManager.AppSettings.AllKeys.Contains ("IsALaCarte") && bool.Parse (ConfigurationManager.AppSettings.Get ("IsALaCarte"));
MSDN: Configuration Manager.AppSettings
if (ConfigurationManager.AppSettings[name] != null)
{
// Now do your magic..
}
o
string s = ConfigurationManager.AppSettings["myKey"];
if (!String.IsNullOrEmpty(s))
{
// Key exists
}
else
{
// Key doesn''t exist
}
if (ConfigurationManager.AppSettings.AllKeys.Contains("myKey"))
{
// Key exists
}
else
{
// Key doesn''t exist
}