/
docNemo
/
clothes-graph
Обзор
Документация
Войти
/
docNemo
/
clothes-graph
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
main
src/ClothesGraph.Model/Drafting/DraftCycleException.cs
49 строк
2 KB
docNemo
Фундамент продукта: параметрическое построение выкроек, печать, установщик
08 авг 2026, 22:17
08 авг 2026, 22:17
cd47cce
Код
Авторство
О чём код?
using System; using System.Collections.Generic; using System.Linq; namespace ClothesGraph.Model.Drafting; /// <summary> /// Построение прямо или косвенно зависит само от себя. /// </summary> /// <remarks> /// Несёт весь путь цикла, а не только замыкающее звено: пользователю нужно /// видеть цепочку целиком, чтобы понять, какое звено разрывать. /// </remarks> public sealed class DraftCycleException : InvalidOperationException { public DraftCycleException(IReadOnlyList<string> cycleNames) : base("Построения образуют цикл: " + string.Join(" → ", cycleNames)) { CycleNames = cycleNames; } /// <summary>Имена построений в порядке обхода цикла; первое повторяется в конце.</summary> public IReadOnlyList<string> CycleNames { get; } } /// <summary> /// Построение нельзя удалить, пока от него зависят другие. /// </summary> public sealed class DraftDependentsException : InvalidOperationException { public DraftDependentsException(string name, IReadOnlyList<string> dependents) : base($"От построения «{name}» зависят: {string.Join(", ", dependents)}") { Name = name; Dependents = dependents; } public string Name { get; } /// <summary>Имена построений, которые перестанут быть разрешимыми.</summary> public IReadOnlyList<string> Dependents { get; } public string FormatForConfirmation() => Dependents.Count == 1 ? $"Будет затронуто построение «{Dependents[0]}». Продолжить?" : $"Будет затронуто построений: {Dependents.Count}. Продолжить?"; public IEnumerable<string> Ordered() => Dependents.OrderBy(name => name); }