namespace BotPages.Core.Abstractions; /// /// Контейнер для адаптер-специфичных опций, позволяющий хранить параметры для нескольких адаптеров. /// Используется внутри . /// 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; } }