I’ve been using Phil Haack‘s Custom Configuration Sections in 3 Easy Steps for some time now, and my configuration file management has never been happier… until I needed to read a collection of configuration elements.
Here’s a sample of the XML I needed to incorporate:
<importer>
<filespecs>
<add type="EmployeeCSV" path="d:\import\employees.csv" />
<add type="OrderCSV" path="d:\import\orders_*.csv" />
</filespecs>
</importer>
The typical solution is to write your own collection class (FilespecConfigurationElementCollection), inheriting from ConfigurationElementCollection, and ensuring your Filespec object inherits from ConfigurationElement. I figured there has to be a better way — and there is.
I wrote a generic version of ConfigurationElementCollection, which you can use to avoid writing the custom collection class. The code that follows is the generic class, the Filespec object I used, and the property declaration from my ConfigurationSettings class (as described in Phil’s previously mentioned article).
Note one key part of this implementation: You must override the ToString() method of your custom ConfigurationElement class to return a unique value. The generic ConfigurationElementCollection uses the ToString() method to obtain a . . .
→ Read More: Simplify configuration with a generic ConfigurationElementCollection class
