示例#1
0
        public LegacyFilter(string name, IEnumerable <IFilterExpression> includeRules, IEnumerable <IFilterExpression> excludeRules)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            if (String.IsNullOrWhiteSpace(name))
            {
                throw new ArgumentException("Value must not be null or whitespace", nameof(name));
            }

            Name           = name;
            m_IncludeRules = includeRules?.ToImmutableList() ?? throw new ArgumentNullException(nameof(includeRules));
            m_ExcludeRules = excludeRules?.ToImmutableList() ?? throw new ArgumentNullException(nameof(excludeRules));

            var rootExpression = new AndFilterExpression(
                new OrFilterExpression(includeRules),
                new NotFilterExpression(new OrFilterExpression(excludeRules)));

            m_Evaluator = new ExpressionEvaluationVisitor(rootExpression);
        }
示例#2
0
 public bool Visit(AndFilterExpression expression, IFileItem parameter)
 {
     return(expression.Expressions.All(ex => ex.Accept(this, parameter)));
 }