Verwendung von benutzerdefinierten Konfigurationsabschnitten mit verschachtelten Elementen.
<demoConfiguration oneStringProperty="Ein Textwert!" oneNumericProperty="25">
<demoSubElement anotherStringProperty="SubElement Property" />
</demoConfiguration>
Wenn die Konfiguration verschachtelte Elemente enthalten muß, wird das Subelement in einer Eigenschaft in der Elternklasse mit dem ConfigurationProperty Attribut gekennzeichnet. Wichtig ist hier der Cast auf den Typ des Subelements beim Lesen der Eigenschaft.
[ConfigurationProperty("demoSubElement")]
public DemoSubElement DemoSubElement
{
get { return (DemoSubElement)this["demoSubElement"]; }
set { this["demoSubElement"] = value; }
}
Das Subelement selbst wird in einer neuen Klasse abgebildet, die von System.Configuration.ConfigurationElement abgeleitet wird. Die Eigenschaften dieser Klasse werden wie gehabt mit ConfigurationProperty Attributen auf die entsprechenden Attribute in der .config-Datei gemappt.
public class DemoSubElement : ConfigurationElement
{
[ConfigurationProperty("anotherStringProperty", DefaultValue = "Standardwert", IsRequired = true)]
public string AnotherStringProperty
{
get { return this["anotherStringProperty"].ToString(); }
set { this["anotherStringProperty"] = value; }
}
}
Auf der Webseite ist das neue Subelement jetzt verwendbar.
WebConfigurationCustom.DemoSection dc =
(DemoSection)WebConfigurationManager.GetSection("demoConfiguration");
string prop = dc.DemoSubElement.AnotherStringProperty; // = "SubElement Property"