53 lines
2.3 KiB
C#
53 lines
2.3 KiB
C#
namespace BotPages.Core.Abstractions;
|
||
|
||
/// <summary>
|
||
/// Фабрика адаптеров мессенджеров.
|
||
/// Используется для разрешения конкретного <see cref="IMessengerAdapterSetup"/> по ID адаптера.
|
||
/// </summary>
|
||
public interface IMessengerAdapterFactory
|
||
{
|
||
/// <summary>
|
||
/// Список всех зарегистрированных адаптеров.
|
||
/// </summary>
|
||
IReadOnlyList<IMessengerAdapterSetup> AllAdapters { get; }
|
||
|
||
/// <summary>
|
||
/// Зарегистрировать адаптер с уникальным идентификатором.
|
||
/// </summary>
|
||
/// <param name="adapterId">Уникальный идентификатор адаптера.</param>
|
||
/// <param name="adapter">Экземпляр адаптера.</param>
|
||
/// <returns>Текущий экземпляр фабрики для цепочки вызовов.</returns>
|
||
/// <exception cref="ArgumentException">Если адаптер с таким ID уже зарегистрирован.</exception>
|
||
IMessengerAdapterFactory Register(string adapterId, IMessengerAdapterSetup adapter);
|
||
|
||
/// <summary>
|
||
/// Зарегистрировать адаптер с автоматически сгенерированным ID.
|
||
/// </summary>
|
||
IMessengerAdapterFactory Register(IMessengerAdapterSetup adapter);
|
||
|
||
/// <summary>
|
||
/// Получить адаптер по ID.
|
||
/// </summary>
|
||
/// <exception cref="InvalidOperationException">Если адаптер не найден.</exception>
|
||
IMessengerAdapter Resolve(string adapterId);
|
||
|
||
/// <summary>
|
||
/// Попытаться получить адаптер по ID.
|
||
/// </summary>
|
||
bool TryResolve(string adapterId, out IMessengerAdapter? adapter);
|
||
|
||
/// <summary>
|
||
/// Получить все адаптеры определенного типа.
|
||
/// </summary>
|
||
IReadOnlyList<IMessengerAdapter> GetAdaptersByType(string adapterType);
|
||
|
||
/// <summary>
|
||
/// Проверить, зарегистрирован ли адаптер с указанным ID.
|
||
/// </summary>
|
||
bool Contains(string adapterId);
|
||
|
||
/// <summary>
|
||
/// Удалить адаптер по ID.
|
||
/// </summary>
|
||
bool Remove(string adapterId);
|
||
} |