public virtual void TraverseAllAspects(ITraverseAspectCommand command) { ClassMetadata classMetadata = _classMetadata; int currentSlot = 0; while (classMetadata != null) { int aspectCount = command.DeclaredAspectCount(classMetadata); for (int i = 0; i < aspectCount && !command.Cancelled(); i++) { command.ProcessAspect(classMetadata._aspects[i], currentSlot); currentSlot++; } if (command.Cancelled()) { return; } classMetadata = classMetadata._ancestor; } }
public void Process(ITraverseAspectCommand command, ClassAspect currentAspect, int currentSlot) { command.ProcessAspect(currentAspect, currentSlot); }