Пример #1
0
        public bool IsFiltered(Func <TFilter, bool> predicate)
        {
            if ((!IncludeFilters.Any() || IncludeFilters.Any(predicate)) && !ExcludeFilters.Any(predicate))
            {
                return(false);
            }

            ++Count;
            return(true);
        }
Пример #2
0
        public IEnumerator <Type> GetEnumerator()
        {
            IEnumerable <Type> filteredTypes = Assemblies.SelectMany(assembly => assembly.GetExportedTypes());

            if (IncludeFilters.Any())
            {
                filteredTypes = filteredTypes.Where(type => IncludeFilters.Any(filter => filter(type)));
            }

            return(filteredTypes.Where(type => !ExcludeFilters.Any(filter => filter(type))).GetEnumerator());
        }
        /// <summary>
        /// Applies the filters to the a given source list
        /// </summary>
        /// <param name="sourceList">The source list</param>
        public IList <TItem> ApplyFilters(IList <TItem> sourceList)
        {
            IList <TItem> result = IncludeFilters.Any()
                ? sourceList.Where(a => IncludeFilters.All(f => f.Invoke(a)))
                                   .Except(sourceList.Where(a => ExcludeFilters.Any(f => f.Invoke(a))))
                                   .ToList()
                : new List <TItem>();

            return(result
                   .Concat(IncludedItems)
                   .Except(ExcludedItems)
                   .ToList());
        }