/// <summary> /// Traverses the specified visitor. /// </summary> /// <param name="visitor">The visitor.</param> /// <param name="element">The element.</param> public void Traverse(IReferenceVisitor visitor, ModelElement element) { if (visitor == null) { throw new ArgumentNullException("visitor"); } if (element == null) { return; } _visitor = visitor; // Il faut toujours commencer par un modèle pour initialiser le contexte CandleModel model = null; if (!(element is CandleModel)) { model = CandleModel.GetInstance(element.Store); visitor.Accept(new ReferenceItem(null, model, false)); // Initialisation du contexte } // Parcours de l'élément choisi Traverse(new ReferenceItem(null, element, false)); if (model != null) { visitor.ExitElement(new ReferenceItem(null, model, false)); } }
public static void DispatchOn(ModuleDefinition module, IReferenceVisitor visitor) { new ReferenceDispatcher(module, visitor).Dispatch(); }
private ReferenceDispatcher(ModuleDefinition module, IReferenceVisitor visitor) { _module = module; _visitor = visitor; }