using System;
namespace ZeroLevel.Patterns.DependencyInjection
{
///
/// Интерфейс с методами для реализации хранения параметров
/// (хранилище ключ-значение, где в качестве ключа используется сущность типа string, а в качестве значения объект любого типа)
///
public interface IParameterStorage
{
#region IEverythingStorage
///
/// Сохранение параметра
///
/// Тип параметра
/// Ключ
/// Значение параметра
void Save(string key, T value);
///
/// Сохранение или обновление параметра
///
/// Тип параметра
/// Ключ
/// Значение параметра
void SaveOrUpdate(string key, T value);
///
/// Безопасное сохранение параметра
///
/// Тип параметра
/// Ключ
/// Значение параметра
/// true - в случае успеха
bool TrySave(string key, T value);
///
/// Удаление параметра
///
/// Тип параметра
/// Ключ
void Remove(string key);
///
/// Безопасное удаление параметра
///
/// Тип параметра
/// Ключ
/// true - в случае успеха
bool TryRemove(string key);
///
/// Запрос сохраненного параметра
///
/// Тип параметра
/// Ключ
/// Значение параметра
T Get(string key);
T GetOrDefault(string key);
T GetOrDefault(string key, T defaultValue);
///
/// Запрос сохраненного параметра
///
/// Тип параметра
/// Ключ
/// Значение параметра
object Get(Type type, string key);
///
/// Проверка наличия параметра с указанным именем
///
/// Тип параметра
/// Ключ
/// Указывает наличие параметра с заданным именем
bool Contains(string key);
#endregion
}
}