public static List<IRelation> ToRelation<TNode>(this ILink<TNode> link, RelationDirection linkDirection = RelationDirection.Forwards) where TNode : INode { List<IRelation> relations = new List<IRelation>(); IRelation forward = ToRelation(link); switch (linkDirection) { case RelationDirection.Forwards: relations.Add(forward); break; case RelationDirection.Backwards: relations.Add(forward.Reverse()); break; case RelationDirection.Both: relations.Add(forward); relations.Add(forward.DeepClone().IReverse()); break; } return relations; }
/***************************************************/ private static List <IRelation> RelationsToAdd(IRelation relation, RelationDirection linkDirection) { List <IRelation> relations = new List <IRelation>(); if (linkDirection == RelationDirection.Forwards) { relations.Add(relation); } if (linkDirection == RelationDirection.Backwards) { relations.Add(relation.IReverse()); } if (linkDirection == RelationDirection.Both) { relations.Add(relation); IRelation clone = relation.DeepClone(); relations.Add(clone.IReverse()); } return(relations); }