Новый api отправки сообщений
This commit is contained in:
44
BotPages.Core/Abstractions/AdapterOptionsBag.cs
Normal file
44
BotPages.Core/Abstractions/AdapterOptionsBag.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user