Files
BotPages/BotPages.Core/Abstractions/IMessengerAdapterFactory.cs

53 lines
2.3 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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);
}