Attribut zu ConfigurationSection hinzufügen

12/06/2008 - 00:07 von Marvin Massih | Report spam
Hallo,

ich möchte meine Anwendung so konfigurieren:

<parent default="child2">
<add name="child1" foo="bar" />
<add name="child2" foo="bar" />
<add name="child3" foo="bar" />
</parent>

Bis auf den "default"-Teil klappt alles:

public class ParentSection : ConfigurationSection
{
const string ElementName = "parent";

public ParentSection( )
{
this[ElementName] = new ChildCollection( );
}

[ConfigurationProperty(ElementName, IsDefaultCollection = false)]
[ConfigurationCollection(typeof(ChildCollection),
AddItemName = "add",
ClearItemsName = "clear",
RemoveItemName = "remove")]
public ChildCollection Configurations
{
get
{
return this[ElementName] as ChildCollection;
}
set
{
this[ElementName] = value;
}
}
}

Nur, wie bekomme ich das "default"-Attribut dazu?
Habe es mit Folgendem probiert, dazu meinte er aber immer etwas von
einem unbekannten Attribut:

[ConfigurationProperty("default",
IsRequired = false, IsKey = false, DefaultValue = null)]
public string DefaultChild
{
get
{
return (string) this[ "default" ];
}
set
{
this[ "default" ] = value;
}
}

Habe es auch schon mit "defaultChild" statt mit "default" probiert, am
Wort an sich scheint es also nicht zu liegen...

Gruß
Marvin
 

Lesen sie die antworten

#1 Frank Dzaebel
12/06/2008 - 08:13 | Warnen spam
Hallo Marvin,

ich möchte meine Anwendung so konfigurieren:
<parent default="child2">
Bis auf den "default"-Teil klappt alles:
Nur, wie bekomme ich das "default"-Attribut dazu?



Im Prinzip gibt es schon eine DefaultSemantik, Beispiel:

[ConfigurationProperty(ElementName, DefaultValue = "child2", IsRequired
= false)]

Aber Du möchtest eine explizite als Attribut-Notation, ok.
Du kannst bei der ConfigurationProperty die Properties überschreiben:

[ConfigurationProperty-Klasse (System.Configuration)] (s. Beispiel)
http://msdn.microsoft.com/de-de/lib...perty.aspx

Also bei Dir letztlich so etwas wie (grob) :

public class ParentSection : ConfigurationSection
{
const string elementName = "parent";

ConfigurationPropertyCollection properties;

public ParentSection()
{
//...
properties = new ConfigurationPropertyCollection();
properties.Add(new ConfigurationProperty("default", typeof(string),
"child2"));
}

protected override ConfigurationPropertyCollection Properties
{
get { return properties;}
}

//
}


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen