redb.Route 3.0.1 — плоская навигация по DSL, рефакторинг CRTP и тихий null
grelikt 5 минут назад redb.Route 3.0.1 — плоская навигация по DSL, рефакторинг CRTP и тихий null Средний 3 мин 43 .NET * C# * Open source * Туториал Продолжаем серию про redb.Route — вводная и разбор четырёх in-memory...
GPT-5.6 31 Temmuz 2026'da yayınlanacak mı?
В сфере искусственного интеллекта произошло заметное событие. grelikt 5 минут назад redb. 1 — плоская навигация по DSL, рефакторинг CRTP и тихий null Средний 3 мин 43 . NET * C# * Open source * Туториал Продолжаем серию про redb.
Route — вводная и разбор четырёх in-memory каналов уже вышли. Сегодня не статья серии, а релизная заметка: в 3. 1 три конкретных изменения в DSL, каждое с боевым примером из демо.
Технические детали
1 глубоко вложенные scope-ы требовали закрывать себя в строго обратном порядке — утомительно и легко ошибиться. Плоская навигация через End*()Typed-closer теперь идёт вверх по цепочке Parent и выходит на нужный уровень за один вызов:From("direct://demo-cascade-endchoice . Split(e => new object?
Process(e => { /* работа с элементом */ }) . EndChoice() // проходит мимо Split → When → возвращается в корень маршрута . SetHeader("post-cascade", "ok .
Log("каскад завершён Универсальный . End() выходит к ближайшему scope, не называя его:. Split(e => new object?
Отраслевые последствия
End() // закрывает RichLog → возвращает тело Split . End() // закрывает Split → возвращает тело When . EndChoice() // закрывает Choice → возвращает корень маршрута Соседние ветки открываются естественно после закрытого sub-scope — .
Otherwise() как extension methods находят ближайший ChoiceDefinition через Parent, поэтому это компилируется как есть:. Body is IEnumerable && e. Body is not string) .
Log("ветка list завершена // всё ещё на теле When, не на Split . Body is string s && s. Length > 0) // ← соседняя ветка после EndSplit .
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.





