using System; using System.Collections.Generic; using ZeroLevel.Services.Serialization; namespace ZeroLevel { /// /// Интерфейс набора конфигурационных данных /// public interface IConfigurationSet : IEquatable, IBinarySerializable { #region Properties /// /// Получение конфигурации по умолчанию /// IConfiguration Default { get; } /// /// Получение конфигурации по имени /// IConfiguration this[string sectionName] { get; } /// /// Получение имен конфигураций /// IEnumerable SectionNames { get; } /// /// Получение всех конфигураций /// IEnumerable Sections { get; } /// /// Указывает, заблокирован или нет набор секций /// bool SectionsFreezed { get; } #endregion #region Methods /// /// Создание секции параметров /// /// Название секции IConfiguration CreateSection(string sectionName); /// /// Запрос секции данных по имени секции /// /// Название секции /// Секция с данными IConfiguration GetSection(string sectionName); /// /// Проверка наличия секции с указанным именем /// /// Название секции /// true - секция существует bool ContainsSection(string sectionName); /// /// Удаление секции /// /// Название секции /// false - если секция уже удалена или не существует bool RemoveSection(string sectionName); /// /// Запрещает вносить какие-либо изменения в существующую конфигурацию во всех секциях /// а также менять набор секций /// /// false - если уже установлен запрет bool FreezeConfiguration(bool permanent = false); /// /// Запрещает вносить какие-либо изменения в существующий набор секций /// /// false - если уже установлен запрет bool FreezeSections(bool permanent = false); /// /// Убирает запрет на внесение изменений в существующую конфигурацию во всех секциях /// а также разрешает менять набор секций /// /// false - если запрет снят bool UnfreezeConfiguration(); /// /// Убирает запрет на внесение изменений в существующий набор секций /// /// false - если запрет снят bool UnfreezeSections(); #endregion } }