Creating a custom Configuration
        Posted  
        
            by Rob
        on Stack Overflow
        
        See other posts from Stack Overflow
        
            or by Rob
        
        
        
        Published on 2010-04-21T16:19:14Z
        Indexed on 
            2010/04/21
            16:23 UTC
        
        
        Read the original article
        Hit count: 393
        
c#
|app.config
I created a customer configuration class Reports. I then created another class called "ReportsCollection". When I try and do the "ConfigurationManager.GetSection()", it doesn't populate my collection variable. Can anyone see any mistakes in my code?
Here is the collection class:
public class ReportsCollection : ConfigurationElementCollection
{
    public ReportsCollection()
    {
    }
    protected override ConfigurationElement CreateNewElement()
    {
        throw new NotImplementedException();
    }
    protected override ConfigurationElement CreateNewElement(string elementName)
    {
        return base.CreateNewElement(elementName);
    }
    protected override object GetElementKey(ConfigurationElement element)
    {
        throw new NotImplementedException();
    }
    public Report this[int index]
    {
        get { return (Report)BaseGet(index); }
    }
}
Here is the reports class:
public class Report : ConfigurationSection
{
    [ConfigurationProperty("reportName", IsRequired = true)]
    public string ReportName
    {
        get { return (string)this["reportName"]; }
        //set { this["reportName"] = value; }
    }
    [ConfigurationProperty("storedProcedures", IsRequired = true)]
    public StoredProceduresCollection StoredProcedures
    {
        get { return (StoredProceduresCollection)this["storedProcedures"]; }
    }
    [ConfigurationProperty("parameters", IsRequired = false)]
    public ParametersCollection Parameters
    {
        get { return (ParametersCollection)this["parameters"]; }
    }
    [ConfigurationProperty("saveLocation", IsRequired = true)]
    public string SaveLocation
    {
        get { return (string)this["saveLocation"]; }
    }
    [ConfigurationProperty("recipients", IsRequired = true)]
    public RecipientsCollection Recipients
    {
        get { return (RecipientsCollection)this["recipients"]; }
    }
}
public class StoredProcedure : ConfigurationElement
{
    [ConfigurationProperty("storedProcedureName", IsRequired = true)]
    public string StoredProcedureName
    {
        get { return (string)this["storedProcedureName"]; }
    }
}
public class StoredProceduresCollection : ConfigurationElementCollection
{
    protected override ConfigurationElement CreateNewElement()
    {
        throw new NotImplementedException();
    }
    protected override ConfigurationElement CreateNewElement(string elementName)
    {
        return base.CreateNewElement(elementName);
    }
    protected override object GetElementKey(ConfigurationElement element)
    {
        throw new NotImplementedException();
    }
    public StoredProcedure this[int index]
    {
        get { return (StoredProcedure)base.BaseGet(index); }
    }
}
}
And here is the very straight-forward code to create the variable:
ReportsCollection reportsCollection = (ReportsCollection) System.Configuration.ConfigurationManager.GetSection("ReportGroup");
© Stack Overflow or respective owner