He estado rastreando la red durante los últimos 3 días y no puedo encontrar ninguna referencia a esta pregunta. Creé una clase de configuración personalizada para usar con mi app.config. Todo funciona bien El problema aparece cuando una propiedad de configuración (de un elemento de configuración) no es necesaria y no está definida en el archivo app.config. Parece que se devuelven valores predeterminados para la propiedad de configuración. ¿Alguien sabe cómo determinar si la propiedad no está definida en la aplicación.config? (He estado tratando de publicar mi app.config, pero no puedo encontrar la manera de hacerlo ... Alguien sabe cómo?)Configuración personalizada, ConfigurationElements y ConfigurationProperties
//Main
namespace TestStub
{
class Program
{
static void Main(string[] args)
{
CustomSettingsHandler config = (CustomSettingsHandler)ConfigurationManager.GetSection("CustomSettingsManager");
Console.WriteLine("Setting1 {0}", config.Setting1.CustomSettingItem);
Console.WriteLine("Setting2 {0}", config.Setting2.CustomSettingItem);
}
}
}
//Custom Configuration Class
namespace CustomConfiguration
{
public class CustomSettingsHandler : ConfigurationSection
{
[ConfigurationProperty("setting1", IsRequired = false)]
public CustomSettingElement Setting1 { get { return (CustomSettingElement)this["setting1"]; } }
[ConfigurationProperty("setting2", IsRequired = false)]
public CustomSettingElement Setting2 { get { return (CustomSettingElement)this["setting2"]; } }
}
public class CustomSettingElement : ConfigurationElement
{
[ConfigurationProperty("customsettingitem", IsRequired = false)]
public int CustomSettingItem { get { return (int)this["customsettingitem"]; } }
}
}
Eso funciona, pero esperaba que hubiera una manera de suprimir el valor predeterminado cuando la propiedad no está definida. El trabajo que estoy usando en este momento es config.Setting2.IsPresent – user62064