public DynamicFilterExpression(IFilterMessages filter) { Verify.NotNull(filter, "filter"); staticFilter = filter; systemEvent = Expression.Parameter(typeof(SystemEvent), "e"); filterParameters = new FilterParameters { systemEvent }; }
protected override Expression BuildExpression(FilterParameters parameters) { var systemEvent = parameters.GetParameter(typeof(SystemEvent)); var propertyName = ExtendedProperties.GetExtendedProperty("property"); var propertyExpression = Expression.Property(systemEvent, propertyName); return(expressionBuilder.Invoke( ConvertPropertyValueIfRequired(propertyExpression), GetConvertedValue(propertyExpression.Type) )); }
protected override Expression BuildExpression(FilterParameters parameters) { var filters = Children.ToList(); switch (filters.Count) { case 0: return(Expression.Constant(true)); case 1: return(filters[0].CreateExpression(parameters)); default: var expression = filters[0].CreateExpression(parameters); for (var i = 1; i < filters.Count; i++) { expression = expressionBuilder.Invoke(expression, filters[i].CreateExpression(parameters)); } return(expression); } }
protected abstract Expression BuildExpression(FilterParameters parameters);
public Expression CreateExpression(FilterParameters parameters) { Verify.NotNull(parameters, "parameters"); return(BuildExpression(parameters)); }
protected override Expression BuildExpression(FilterParameters parameters) { return(Expression.Not(base.BuildExpression(parameters))); }