public void StartVisit(IOperatorNode operatorNode) { FilterDescriptor filterDescriptor = new FilterDescriptor { Operator = operatorNode.FilterOperator }; CompositeFilterDescriptor compositeFilterDescriptor = CurrentDescriptor as CompositeFilterDescriptor; if (compositeFilterDescriptor != null) { compositeFilterDescriptor.FilterDescriptors.Add(filterDescriptor); } context.Push(filterDescriptor); }
private static bool TypesAreDifferent(FilterDescriptor descriptor, Expression memberExpression, Expression valueExpression) { bool isEqualityOperator = descriptor.Operator == FilterOperator.IsEqualTo || descriptor.Operator == FilterOperator.IsNotEqualTo; return isEqualityOperator && !memberExpression.Type.IsValueType && !valueExpression.Type.IsValueType; }
public FilterDescriptorExpressionBuilder(ParameterExpression parameterExpression, FilterDescriptor descriptor) : base(parameterExpression) { this.descriptor = descriptor; }
/// <summary> /// Determines whether the specified <paramref name="other"/> descriptor /// is equal to the current one. /// </summary> /// <param name="other">The other filter descriptor.</param> /// <returns> /// True if all members of the current descriptor are /// equal to the ones of <paramref name="other"/>, otherwise false. /// </returns> public virtual bool Equals(FilterDescriptor other) { if (ReferenceEquals(null, other)) { return false; } if (ReferenceEquals(this, other)) { return true; } return Equals(other.Operator, this.Operator) && Equals(other.Member, this.Member) && Equals(other.Value, this.Value); }