private void AddAnonymousItem(Queue <string> nameParts, U item) { if (nameParts.Count == 0) { AnonymousItems.Add(item); if (OnItemAdded != null) { OnItemAdded(null, item); } } else { var first = nameParts.Dequeue(); if (!Subnodes.ContainsKey(first)) { throw new UriTreeException( String.Format( "Could not add item '{0}' to group with full name '{1}'; " + "missing intermediate node with name '{2}'. Consider using InsertItem instead.", item, FullName, first ) ); } Subnodes[first].AddAnonymousItem(nameParts, item); } }
private void InsertAnonymousItem <NodeType>(Queue <string> nameParts, U item) where NodeType : UriTreeMutableGroup <T, U> { if (nameParts.Count == 0) { AnonymousItems.Add(item); if (OnItemAdded != null) { OnItemAdded(null, item); } } else { var first = nameParts.Dequeue(); if (!Subnodes.ContainsKey(first)) { var newNode = (T)Activator.CreateInstance(typeof(NodeType), first); newNode.SetParent((T)this); } Subnodes[first].InsertAnonymousItem <NodeType>(nameParts, item); } }
/// <summary> /// Add an anonymous item to this group. /// </summary> /// <param name="item"></param> public void AddAnonymousItem(U item) { AnonymousItems.Add(item); }