namespace BotPages.Core.Routing;
///
/// Реестр маршрутов страниц.
///
internal sealed class RoutesRegistry
{
private readonly Dictionary _routes = new(StringComparer.OrdinalIgnoreCase);
///
/// Зарегистрировать маршрут для страницы.
///
public void Map(string template) where TPage : Page
{
if (_routes.ContainsKey(template))
throw new InvalidOperationException($"Route '{template}' is already mapped.");
_routes[template] = typeof(TPage);
}
///
/// Найти страницу по маршруту.
///
public Type? Resolve(string template) => _routes.TryGetValue(template, out var t) ? t : null;
///
/// Получить снимок всех маршрутов.
///
public IReadOnlyDictionary Snapshot() => _routes;
}