public void RefreshAlternativeNodes() { foreach (CriterionNode criterionNode in GoalNode.GetLowestCriterionNodes()) { foreach (Alternative alternative in Alternatives) { if (!criterionNode.AlternativeNodes.Contains(alternative)) { criterionNode.AlternativeNodes.Add(new AlternativeNode(alternative)); } } AlternativeNodeCollection toBeRemoved = new AlternativeNodeCollection(); foreach (AlternativeNode alternativeNode in criterionNode.AlternativeNodes) { if (!this.Alternatives.Contains(alternativeNode.Alternative)) { toBeRemoved.Add(alternativeNode); } } foreach (AlternativeNode alternativeNode in toBeRemoved) { criterionNode.AlternativeNodes.Remove(alternativeNode); } } }
public CriterionNode(string name, decimal localPriority) : base(name, localPriority) { subcriterionNodes = new CriterionNodeCollection(HandleChildCriterionAdded, HandleChildCriterionRemoved); alternativeNodes = new AlternativeNodeCollection(HandleAlternativeAdded, HandleAlternativeRemoved); }