sharp-reflective-configuration/Configuration.cs

56 lines
1.5 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
namespace ReflectiveConfiguration
{
public abstract class Configuration
{
Dictionary<String, ConfigurationSection> sections = new Dictionary<string, ConfigurationSection>();
public Configuration()
{
ConfigurationSection defaultSection = this[""];
}
public Configuration(String path){
LoadFrom(path);
}
public ConfigurationSection this[string name] {
get {
if (sections.ContainsKey(name))
{
return sections[name];
}
return createSection(name);
}
}
public Dictionary<String,ConfigurationSection>.KeyCollection Keys {
get { return this.sections.Keys; }
}
public void LoadFrom(String path)
{
using (FileStream stream = new FileStream(path, FileMode.Open, FileAccess.Read))
{
LoadFrom(stream);
}
}
public void SaveTo(String path)
{
using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
{
SaveTo(stream);
}
}
public abstract ConfigurationSection createSection(String name);
public abstract void LoadFrom(Stream stream);
public abstract void SaveTo(Stream stream);
}
}