namespace BotPages.Core.Abstractions;
///
/// Контейнер для адаптер-специфичных опций, позволяющий хранить параметры для нескольких адаптеров.
/// Используется внутри `SendRequest.AdapterOptions`.
///
public sealed class AdapterOptionsBag
{
private readonly Dictionary _map = new(StringComparer.OrdinalIgnoreCase);
///
/// Установить опции для адаптера.
///
public void Set(string adapterKey, T options)
{
if (adapterKey is null) throw new ArgumentNullException(nameof(adapterKey));
_map[adapterKey] = options;
}
///
/// Попробовать получить опции для адаптера.
///
public bool TryGet(string adapterKey, out T? options)
{
if (adapterKey is null) throw new ArgumentNullException(nameof(adapterKey));
if (_map.TryGetValue(adapterKey, out var o) && o is T t)
{
options = t;
return true;
}
options = default;
return false;
}
///
/// Получить опции или вернуть null.
///
public T? GetOrDefault(string adapterKey)
{
TryGet(adapterKey, out T? v);
return v;
}
}