Пример #1
0
        DirectedGraph(IEnumerable <DirectedEdge> edges, IEnumerable <NodeIdentity> nodes)
        {
            ArgumentHelpers.ThrowIfNull(() => edges);
            ArgumentHelpers.ThrowIfNull(() => nodes);

            foreach (var node in nodes)
            {
                if (!_nodes.Add(node))
                {
                    throw new DuplicateNodeException(nameof(nodes));
                }
            }

            _edges = edges.GroupBy(e => e.From)
                     .ToDictionary(kv => kv.Key, kv => kv.ToList());
        }
Пример #2
0
 private Path(IEnumerable <NodeIdentity> steps)
 {
     ArgumentHelpers.ThrowIfNull(() => steps);
     _steps = new List <NodeIdentity>(steps);
 }