Ejemplo n.º 1
0
        /// <summary>
        /// Disconnects the group from all imports and exports.
        /// </summary>
        /// <param name="group">The composition ID of the group.</param>
        public void Disconnect(GroupCompositionId group)
        {
            if ((group == null) || !m_GroupConnections.ContainsVertex(group))
            {
                return;
            }

            var matchingExports = m_GroupConnections
                                  .InEdges(group)
                                  .Select(edge => new Tuple <GroupCompositionId, GroupImportDefinition>(edge.Source, edge.Import));

            foreach (var pair in matchingExports)
            {
                DisconnectParts(group, pair.Item2, pair.Item1);
            }

            var matchingImports = m_GroupConnections
                                  .OutEdges(group)
                                  .Select(edge => new Tuple <GroupCompositionId, GroupImportDefinition>(edge.Target, edge.Import));

            foreach (var pair in matchingImports)
            {
                DisconnectParts(pair.Item1, pair.Item2, group);
            }

            m_GroupConnections.RemoveInEdgeIf(group, edge => true);
            m_GroupConnections.RemoveOutEdgeIf(group, edge => true);
        }
Ejemplo n.º 2
0
        private void DisconnectPartInstanceFromImportingParts(PartCompositionId partId)
        {
            var importingParts = m_PartConnections
                                 .OutEdges(partId)
                                 .Select(edge => new Tuple <PartCompositionId, ImportRegistrationId>(edge.Target, edge.ImportRegistration));

            foreach (var pair in importingParts)
            {
                DisconnectInstanceFromExport(pair.Item1, pair.Item2, partId);
            }
        }