Ich habe das Netz für die letzten 3 Tage durchsucht und kann keine Referenz zu dieser Frage finden. Ich habe eine benutzerdefinierte Konfigurationsklasse erstellt, die mit meiner app.config verwendet werden kann. Alles funktioniert gut. Das Problem tritt auf, wenn eine Konfigurationseigenschaft (eines Konfigurationselements) nicht erforderlich ist und nicht in der app.config definiert ist. Es scheint, dass Standardwerte für die Konfigurationseigenschaft zurückgegeben werden. Kann jemand feststellen, ob die Eigenschaft in der app.config nicht definiert ist? (Ich habe versucht, meine app.config zu schreiben, kann aber nicht herausfinden, wie es zu tun ... Wer weiß, wie?)Benutzerdefinierte Konfiguration, ConfigurationElements und 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"]; } }
}
}
Das funktioniert, aber ich hatte gehofft, es gab eine Möglichkeit, den Standard zu unterdrücken, wenn die Eigenschaft nicht definiert ist. Die Arbeit, die ich gerade benutze, ist config.Setting2.IsPresent – user62064