示例#1
0
 private bool RemoveAnonymousItem(Queue <string> nameParts, U item, bool failQuiet)
 {
     if (nameParts.Count == 0)
     {
         var removed = AnonymousItems.Remove(item);
         if (OnItemRemoved != null)
         {
             OnItemRemoved(null, item);
         }
         return(removed);
     }
     else
     {
         var first = nameParts.Dequeue();
         if (!Subnodes.ContainsKey(first))
         {
             if (failQuiet)
             {
                 return(false);
             }
             throw new UriTreeException(
                       String.Format(
                           "Could not remove item '{0}' from group with full name '{1}'; " +
                           "missing intermediate node with name '{2}'.",
                           item, FullName, first
                           )
                       );
         }
         return(Subnodes[first].RemoveAnonymousItem(nameParts, item, failQuiet));
     }
 }
示例#2
0
 /// <summary>
 /// Remove an anonymous item from this group.
 /// </summary>
 /// <param name="item"></param>
 public bool RemoveAnonymousItem(U item, bool searchRecursive = true)
 {
     if (!AnonymousItems.Remove(item) && searchRecursive)
     {
         if (IsLeaf)
         {
             return(false);
         }
         return(Subnodes.Any(kvp => kvp.Value.RemoveAnonymousItem(item, searchRecursive)));
     }
     if (OnItemRemoved != null)
     {
         OnItemRemoved(null, item);
     }
     return(true);
 }