45 lines
1.2 KiB
C#
45 lines
1.2 KiB
C#
namespace BotPages.Core.Abstractions;
|
|
|
|
/// <summary>
|
|
/// Êîíòåéíåð äëÿ àäàïòåð-ñïåöèôè÷íûõ îïöèé, ïîçâîëÿþùèé õðàíèòü ïàðàìåòðû äëÿ íåñêîëüêèõ àäàïòåðîâ.
|
|
/// Èñïîëüçóåòñÿ âíóòðè `SendRequest.AdapterOptions`.
|
|
/// </summary>
|
|
public sealed class AdapterOptionsBag
|
|
{
|
|
private readonly Dictionary<string, object?> _map = new(StringComparer.OrdinalIgnoreCase);
|
|
|
|
/// <summary>
|
|
/// Óñòàíîâèòü îïöèè äëÿ àäàïòåðà.
|
|
/// </summary>
|
|
public void Set<T>(string adapterKey, T options)
|
|
{
|
|
if (adapterKey is null) throw new ArgumentNullException(nameof(adapterKey));
|
|
_map[adapterKey] = options;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ïîïðîáîâàòü ïîëó÷èòü îïöèè äëÿ àäàïòåðà.
|
|
/// </summary>
|
|
public bool TryGet<T>(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;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Ïîëó÷èòü îïöèè èëè âåðíóòü null.
|
|
/// </summary>
|
|
public T? GetOrDefault<T>(string adapterKey)
|
|
{
|
|
TryGet(adapterKey, out T? v);
|
|
return v;
|
|
}
|
|
}
|