void IDirectedConnectedNodeCollection <T> .RemoveNode(IDirectedConnectedNode <T> targetNode) { if (Helpers <T> .CheckWhether_RemoveNode_IsNeeded(targetNode, this)) { return; } var typedNode = TypedHelpers.GetNodeAsValidType <PointerDCN <T>, T>(targetNode); foreach (var typedConnectedToNode in targetNode.GetNodesConnected(ConnectionDirection.Any).Select(node => TypedHelpers.GetNodeAsValidType <PointerDCN <T>, T>(node))) { typedConnectedToNode.InternalRemoveNodeConnectionRequest(typedNode, ConnectionDirection.Any); } this.InternalRemoveNodeRequest(typedNode); typedNode.InternalDeleteParentCollectionRequest(); }
IEnumerable <IDirectedConnectedNode <T> > IDirectedConnectedNodeCollection <T> .GetNodesConnected(IDirectedConnectedNode <T> firstNode, ConnectionDirection direction) { Helpers <T> .Verify_GetNodesConnected_ConditionsAreSatisfied(firstNode, this); return(firstNode.GetNodesConnected(direction)); }