Creating a custom Configuration
- by Rob
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");