You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Zero/ZeroLevel/Services/Config/IConfiguration.cs

117 lines
4.8 KiB

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

Powered by TurnKey Linux.