コード例 #1
0
        public void Clear()
        {
            var temp = classes.ToList();

            classes.Clear();

            foreach (var node in temp)
            {
                node.NodesChanged -= NodesChanged_Handler;

                ClassRemoved?.Invoke(node);
            }
        }
コード例 #2
0
        public void RemoveUnusedClasses()
        {
            var toRemove = classes
                           .Except(classes.Where(x => GetClassReferences(x).Any())) // check for references
                           .Where(c => c.Nodes.All(n => n is BaseHexNode))          // check if only hex nodes are present
                           .ToList();

            foreach (var node in toRemove)
            {
                if (classes.Remove(node))
                {
                    ClassRemoved?.Invoke(node);
                }
            }
        }
コード例 #3
0
        public void Remove(ClassNode node)
        {
            Contract.Requires(node != null);

            var references = GetClassReferences(node).ToList();

            if (references.Any())
            {
                throw new ClassReferencedException(references);
            }

            if (classes.Remove(node))
            {
                node.NodesChanged -= NodesChanged_Handler;

                ClassRemoved?.Invoke(node);
            }
        }