private void EnumSingleFolder(FolderRecWrapper folderRec, FolderMap.EnumFolderContext ctx, FolderMap.EnumFolderCallback callback, EnumHierarchyFlags flags) { ctx.Result = EnumHierarchyResult.Continue; if (folderRec.IsSpoolerQueue) { return; } if (FolderMap.IsValidFolderType(flags, folderRec)) { callback(folderRec, ctx); } if (ctx.Result == EnumHierarchyResult.Cancel || ctx.Result == EnumHierarchyResult.SkipSubtree) { return; } if (folderRec.Children != null) { foreach (FolderRecWrapper folderRec2 in folderRec.Children) { ctx.Result = EnumHierarchyResult.Continue; this.EnumSingleFolder(folderRec2, ctx, callback, flags); if (ctx.Result == EnumHierarchyResult.Cancel) { break; } } } }
protected virtual IEnumerable <FolderRecWrapper> GetFolderList(EnumHierarchyFlags flags, FolderRecWrapper folderRec) { Stack <FolderRecWrapper> stack = new Stack <FolderRecWrapper>(); stack.Push(folderRec); while (stack.Count > 0) { FolderRecWrapper currentFolderRec = stack.Pop(); if (!currentFolderRec.IsSpoolerQueue) { if (FolderMap.IsValidFolderType(flags, currentFolderRec)) { yield return(currentFolderRec); } if (currentFolderRec.Children != null) { foreach (FolderRecWrapper item in currentFolderRec.Children) { stack.Push(item); } } } } yield break; }