public override IRuleMacro GetTreeMacro(XElement element, string name, UrlString parameters)
        {
            var item = RuleHelper.GetItemFromParameters("dependency", element, parameters);

            Assert.IsNotNull(item, "The parameter 'dependency' was not specified or could not be resolved");

            var selectorConfig             = this.MacroConfiguration.GetMacroSelectorConfig(item);
            IMacroSelectorForItem selector = null;

            if (selectorConfig != null)
            {
                selector = selectorConfig.GetTreeSelector(item);
            }
            if (selector == null)
            {
                selector = this.MacroConfiguration.DefaultTreeSelector;
            }
            if (selector == null)
            {
                return(null);
            }
            var macro = selector.GetMacro(item);

            return(macro);
        }
 protected virtual void AddSelector(IMacroSelectorForItem selector, List <IMacroSelectorForItem> list)
 {
     Assert.ArgumentNotNull(selector, "selector");
     Assert.ArgumentNotNull(list, "list");
     if (list.Contains(selector))
     {
         return;
     }
     list.Add(selector);
 }
 protected virtual void AddSelector(IMacroSelectorForItem selector, List<IMacroSelectorForItem> list)
 {
     Assert.ArgumentNotNull(selector, "selector");
     Assert.ArgumentNotNull(list, "list");
     if (list.Contains(selector))
     {
         return;
     }
     list.Add(selector);
 }
 public virtual void AddValueSelector(IMacroSelectorForItem selector)
 {
     AddSelector(selector, this.ValueSelectors);
 }
 public virtual void AddOperatorSelector(IMacroSelectorForItem selector)
 {
     AddSelector(selector, this.OperatorSelectors);
 }
 public virtual void AddValueSelector(IMacroSelectorForItem selector)
 {
     AddSelector(selector, this.ValueSelectors);
 }
 public virtual void AddOperatorSelector(IMacroSelectorForItem selector)
 {
     AddSelector(selector, this.OperatorSelectors);
 }