public void Clear() { var temp = classes.ToList(); classes.Clear(); foreach (var node in temp) { node.NodesChanged -= NodesChanged_Handler; ClassRemoved?.Invoke(node); } }
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); } } }
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); } }