56 lines
1.5 KiB
C#
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);
|
|
}
|
|
}
|