|
using System;
using System.Linq;
using System.Configuration;
using System.Collections.Generic;
namespace PluginBase
{
public abstract class ConfigurationBase : ConfigurationSection
{
/// <summary>
/// Opens the configuration section with the specified type and name
/// </summary>
/// <param name="sectionName">Configuration section's name</param>
/// <param name="configPath">Configuration file's path</param>
/// <returns>Instance of the configuration section's class</returns>
public static T Open<T>(string sectionName, string configPath) where T : ConfigurationBase, new()
{
T instance = new T();
if (configPath.EndsWith(".config", StringComparison.InvariantCultureIgnoreCase))
configPath = configPath.Remove(configPath.Length - 7);
try
{
Configuration config = ConfigurationManager.OpenExeConfiguration(configPath);
/* section not found */
if (config.GetSection(sectionName) == null)
{
config.Sections.Add(sectionName, instance);
foreach (ConfigurationProperty p in instance.Properties)
((T)config.GetSection(sectionName)).SetPropertyValue(p, p.DefaultValue, true);
config.Save();
}
else
/* section already exists */
instance = (T)config.Sections[sectionName];
}
catch (ConfigurationErrorsException)
{
if (instance == null)
instance = new T();
}
return instance;
}
}
}
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.