45 lines
2.0 KiB
C#
45 lines
2.0 KiB
C#
using BotPages.Core.Context;
|
||
|
||
namespace BotPages.Core.Abstractions;
|
||
|
||
/// <summary>
|
||
/// Фабрика адаптеров мессенджеров.
|
||
/// Используется для разрешения конкретного <see cref="IMessangerAdapterSetup"/> по типу мессенджера.
|
||
/// </summary>
|
||
public interface IMessengerAdapterFactory
|
||
{
|
||
/// <summary>
|
||
/// Список зарегистрированных адаптеров.
|
||
/// </summary>
|
||
Dictionary<string, IMessangerAdapterSetup> Adapters { get; }
|
||
|
||
/// <summary>
|
||
/// Зарегистрировать адаптер для указанного типа мессенджера.
|
||
/// </summary>
|
||
/// <param name="messengerType">
|
||
/// Тип мессенджера (например, "Telegram", "Slack", "VK").
|
||
/// </param>
|
||
/// <param name="adapter">
|
||
/// Экземпляр адаптера, реализующий <see cref="IMessengerAdapter"/>.
|
||
/// </param>
|
||
/// <returns>
|
||
/// Текущий экземпляр <see cref="MultiAdapterFactory"/> для цепочки вызовов.
|
||
/// </returns>
|
||
IMessengerAdapterFactory Register(string messengerType, IMessangerAdapterSetup adapter);
|
||
|
||
/// <summary>
|
||
/// Получить адаптер для указанного мессенджера.
|
||
/// </summary>
|
||
/// <param name="messengerType">
|
||
/// Тип мессенджера (например, "Telegram", "Slack", "VK").
|
||
/// Значение должно совпадать с <see cref="UpdateContext.MessengerType"/>.
|
||
/// </param>
|
||
/// <returns>
|
||
/// Экземпляр <see cref="IMessengerAdapter"/>, зарегистрированный для данного типа мессенджера.
|
||
/// </returns>
|
||
/// <exception cref="InvalidOperationException">
|
||
/// Выбрасывается, если адаптер для указанного типа не зарегистрирован.
|
||
/// </exception>
|
||
IMessengerAdapter Resolve(string messengerType);
|
||
}
|