using System.IO; namespace ZeroLevel.Services.Config.Implementation { /// /// Запись конфигурации в ini-файл /// public class IniFileWriter : IConfigurationWriter { /// /// Путь к ini-файлу /// private readonly string _iniPath; /// /// Инициализирует новый экземпляр класса /// /// Путь к ini-файлу public IniFileWriter(string iniPath) { _iniPath = iniPath; } /// /// Запись простой конфигурации /// /// Конфигурация public void WriteConfiguration(IConfiguration configuration) { using (TextWriter writer = new StreamWriter(_iniPath, false)) { foreach (string key in configuration.Keys) { if (configuration.Count(key) > 0) { foreach (string value in configuration[key]) { writer.WriteLine(key.Trim() + "=" + value.Trim()); } } else { writer.WriteLine(key.Trim()); } } writer.Flush(); } } /// /// Запись конфигурации разбитой по секциям /// /// Конфигурация public void WriteConfigurationSet(IConfigurationSet configuration) { using (TextWriter writer = new StreamWriter(_iniPath, false)) { foreach (string section in configuration.SectionNames) { if (false == section.Equals(Configuration.DEFAULT_SECTION_NAME, System.StringComparison.Ordinal)) writer.WriteLine("[" + section + "]"); foreach (string key in configuration[section].Keys) { if (configuration[section].Count(key) > 0) { foreach (string value in configuration[section][key]) { writer.WriteLine(key + "=" + value); } } else { writer.WriteLine(key); } } } writer.Flush(); } } } }