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); }
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); }