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()); }
private Path(IEnumerable <NodeIdentity> steps) { ArgumentHelpers.ThrowIfNull(() => steps); _steps = new List <NodeIdentity>(steps); }