using System; using System.Collections.Generic; using ZeroLevel.Services.Serialization; namespace ZeroLevel { /// /// Интерфейс конфигурационных данных /// public interface IConfiguration : IEquatable, IBinarySerializable { #region Properties /// /// Получение списка значений по ключу /// IEnumerable this[string key] { get; } /// /// Перечисление ключей /// IEnumerable Keys { get; } /// /// Указывает что конфигурация заблокирована на изменения /// bool Freezed { get; } #endregion #region Methods /// /// Получение списка значений параметра по ключу /// /// Имя параметра /// Список значений IEnumerable Items(string key); /// /// Получение одного(первого) значения параметра по ключу /// string First(string key); /// /// Получить первое значение в виде объекта типа T /// T First(string key); /// /// Получить первое значение или значение по умолчанию /// string FirstOrDefault(string name, string defaultValue); /// /// Получить первое значение в виде объекта типа T или получить значение по умолчанию /// T FirstOrDefault(string name); /// /// Получить первое значение в виде объекта типа T или получить переданное значение по умолчанию /// T FirstOrDefault(string name, T defaultValue); /// /// Проверка наличия ключа /// bool Contains(string key); /// /// Проверка наличия одного из ключей /// bool Contains(params string[] keys); /// /// Проверка наличия значения по ключу /// bool ContainsValue(string key, string value); /// /// Количество значений параметра /// int Count(string key); /// /// Выполняет указанное действие только в случае если в конфигурации есть ключ /// void DoWithFirst(string key, Action action); /// /// Выполняет указанное действие только в случае если в конфигурации есть ключ /// void DoWithFirst(string key, Action action); #endregion #region Create, Clean, Delete /// /// Очистка всей секции /// IConfiguration Clear(); /// /// Очистка значения ключа /// IConfiguration Clear(string key); /// /// Удаление ключа и значений /// IConfiguration Remove(string key); /// /// Добавление параметра /// IConfiguration Append(string key, string value); /// /// Задает значение в единственном числе, /// существующее значение будет перезаписано /// IConfiguration SetUnique(string key, string value); /// /// Запрещает вносить какие-либо изменения в конфигурацию /// /// false - если уже установлен запрет bool Freeze(bool permanent = false); /// /// Убирает запрет на внесение изменений в конфигурацию /// /// false - если запрет снят bool Unfreeze(); #endregion } }