public ActionType OnFileFinded(
            string fileInfo,
            Func <string, bool> filter,
            EventHandler <FileFindedEventArgs> fileFinded,
            EventHandler <FileFindedEventArgs> filteredFileFinded,
            Action <EventHandler <FileFindedEventArgs>, FileFindedEventArgs> eventEmitter)
        {
            FileFindedEventArgs args = new FileFindedEventArgs
            {
                ActionType = ActionType.Continue,
                FileInfo   = fileInfo
            };

            eventEmitter(fileFinded, args);

            if (args.ActionType != ActionType.Continue || filter == null)
            {
                return(args.ActionType);
            }

            if (filter(fileInfo))
            {
                args = new FileFindedEventArgs
                {
                    ActionType = ActionType.Continue,
                    FileInfo   = fileInfo
                };

                eventEmitter(filteredFileFinded, args);

                return(args.ActionType);
            }

            return(ActionType.Exclude);
        }
Exemple #2
0
        public ActionType ProcessItemFinded <TItemInfo>(
            TItemInfo itemInfo,
            Func <FileSystemInfo, bool> filter,
            EventHandler <FileFindedEventArgs <TItemInfo> > itemFinded,
            EventHandler <FileFindedEventArgs <TItemInfo> > filteredItemFinded,
            Action <EventHandler <FileFindedEventArgs <TItemInfo> >, FileFindedEventArgs <TItemInfo> > eventEmitter)
            where TItemInfo : FileSystemInfo
        {
            FileFindedEventArgs <TItemInfo> args = new FileFindedEventArgs <TItemInfo>
            {
                FindedItem = itemInfo,
                ActionType = ActionType.ContinueSearch
            };

            eventEmitter(itemFinded, args);

            if (args.ActionType != ActionType.ContinueSearch || filter == null)
            {
                return(args.ActionType);
            }

            if (filter(itemInfo))
            {
                args = new FileFindedEventArgs <TItemInfo>
                {
                    FindedItem = itemInfo,
                    ActionType = ActionType.ContinueSearch
                };
                eventEmitter(filteredItemFinded, args);
                return(args.ActionType);
            }

            return(ActionType.SkipElement);
        }