I need another look at this problem. I get
ErrExException was not handled 'The property' exportClientSettings' is not a ConfigurationElement.
Exception raised on call ExportClientConfiguration.GetSection();
Here is my code:
App.config
<configSections>
<section name="exportClientConfiguration" type="ClientConversionUtilityBroker.ConfigurationModels.ExportClientPathConfiguration.ExportClientConfiguration, ClientConversionUtilityBroker"/>
</configSections>
<exportClientConfiguration>
<exportClientSettings>
<exportClientSetting name="Example" Path="\\Example\Path" />
</exportClientSettings>
</exportClientConfiguration>
C # code
public class ExportClientConfiguration : ConfigurationSection, IExportClientConfiguration
{
private const string ExportClientSettingsCollectionName = "exportClientSettings";
[ConfigurationProperty(ExportClientSettingsCollectionName, IsDefaultCollection = true)]
public IEnumerable<ExportClientSettings> ExportClientConfigurationItems
{
get { return base[ExportClientSettingsCollectionName] as ExportClientSettingsCollection; }
}
public IList<IExportClientSettings> ExportClientSettings
{
get { return ExportClientConfigurationItems.ToList<IExportClientSettings>(); }
}
public static IExportClientConfiguration GetSection(string configurationSectionName = "exportClientConfiguration")
{
IExportClientConfiguration section = ConfigurationManager.GetSection(configurationSectionName) as ExportClientConfiguration;
return section;
}
}
[ConfigurationCollection(typeof(ExportClientSettings), AddItemName = "exportClientSetting")]
public class ExportClientSettingsCollection : ConfigurationElementCollection, IEnumerable<ExportClientSettings>
{
public ExportClientSettings this[int index]
{
get { return BaseGet(index) as ExportClientSettings; }
}
public new IEnumerator<ExportClientSettings> GetEnumerator()
{
return (from item in Enumerable.Range(0, Count)
select this[item]).GetEnumerator();
}
protected override ConfigurationElement CreateNewElement()
{
return new ExportClientSettings();
}
protected override object GetElementKey(ConfigurationElement element)
{
var lConfigElement = element as ExportClientSettings;
return lConfigElement != null ? lConfigElement.Name : null;
}
}
public class ExportClientSettings : ConfigurationElement, IExportClientSettings
{
private const string NameProperty = "name";
private const string PathProperty = "path";
[ConfigurationProperty(NameProperty, IsKey = true)]
public string Name
{
get { return this[NameProperty].ToString(); }
}
[ConfigurationProperty(PathProperty)]
public string Path
{
get { return this[PathProperty].ToString(); }
}
}
What am I missing?
source
share