Ich weiß, ich bin spät, aber ich fand diese Lösung und es funktioniert perfekt, also möchte ich nur teilen.
Es geht um Ihre eigene Definition von ConfigurationElement
namespace Configuration.Helpers
{
public class ValueElement : ConfigurationElement
{
[ConfigurationProperty("name", IsKey = true, IsRequired = true)]
public string Name
{
get { return (string) this["name"]; }
}
}
public class ValueElementCollection : ConfigurationElementCollection
{
protected override ConfigurationElement CreateNewElement()
{
return new ValueElement();
}
protected override object GetElementKey(ConfigurationElement element)
{
return ((ValueElement)element).Name;
}
}
public class MultipleValuesSection : ConfigurationSection
{
[ConfigurationProperty("Values")]
public ValueElementCollection Values
{
get { return (ValueElementCollection)this["Values"]; }
}
}
}
Und in der app.config gerade Ihren neuen Abschnitt verwenden:
<configSections>
<section name="PreRequest" type="Configuration.Helpers.MultipleValuesSection,
Configuration.Helpers" requirePermission="false" />
</configSections>
<PreRequest>
<Values>
<add name="C++"/>
<add name="Some Application"/>
</Values>
</PreRequest>
und wenn Daten wie diese abrufen:
var section = (MultipleValuesSection) ConfigurationManager.GetSection("PreRequest");
var applications = (from object value in section.Values
select ((ValueElement)value).Name)
.ToList();
Endlich dank dem Autor des Originals post
Also, was der Punkt 'ConfigurationManager.AppSettings.GetValues ist () 'dann? – Yuck
@Yuck fragt den Punkt der zugrundeliegenden NameValueCollection-Klasse ab - die mehrere Werte pro Schlüssel unterstützt, aber nicht mehr als einen pro Schlüssel festlegen kann (AppSettings muss intern den Set-Indexer verwenden) - dies ist die wahre Ursache des Ausgabe, anstatt GetValues () nur einen einzelnen Wert zurückgeben. – fusi
Wenn nur ein einzelner Wert vorhanden ist, tritt ein beliebiger nicht gefundener Fehler auf? –