BaseCompareSpecification<T> Class

Summary

Base implementation for all Specifications with two value comparison.
graph BT Type-->Base0["ComplexSpecification<T>"] Base0-->Base1["NegatableValidationSpecification<T>"] Base1-->Base2["ValidationSpecification<T>"] Base2-->Base3["object"] Type-.->Interface0["INegatableValidationSpecification<T>"] Type-.->Interface1["IComplexSpecification<T>"] Type-.->Interface2["IValidationSpecification<T>"] Type-.->Interface3["ILinqSpecification<T>"] Type-.->Interface4["ILinqSpecification"] click Interface4 "/FluentSpecification/api/FluentSpecification.Abstractions/ILinqSpecification" Type-.->Interface5["ISpecification<T>"] Type-.->Interface6["INegatableLinqSpecification<T>"] Type-.->Interface7["INegatableSpecification<T>"] Type-.->Interface8["ISpecification"] click Interface8 "/FluentSpecification/api/FluentSpecification.Abstractions/ISpecification" Type["BaseCompareSpecification<T>"] class Type type-node Derived0["BaseGreaterCompareSpecification<T>"]-->Type click Derived0 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseGreaterCompareSpecification_1" Derived1["BaseLessCompareSpecification<T>"]-->Type click Derived1 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseLessCompareSpecification_1"

Syntax

[PublicAPI]
public abstract class BaseCompareSpecification<T> : ComplexSpecification<T>, 
    INegatableValidationSpecification<T>, IComplexSpecification<T>, IValidationSpecification<T>, 
    ILinqSpecification<T>, ILinqSpecification, ISpecification<T>, INegatableLinqSpecification<T>, 
    INegatableSpecification<T>, ISpecification

Attributes

Type Description
PublicAPI

Type Parameters

Name Description
T Type of compared objects.

Constructors

Name Summary
BaseCompareSpecification(T, Func<Expression, Expression, Expression>, IComparer<T>) Creates Specification for candidate value comparison.

Properties

Name Value Summary
IsNullable bool
Is T nullable type.
Limit T
Limit value.

Methods

Name Value Summary
BuildExpressionBody(Expression) Expression
Creates special Expression body when T is non-value or nullable type.
BuildExpressionBodyWithLimit(Expression) Expression
Creates special Expression body when Limit value defined.
BuildExpressionBodyWithoutLimit(Expression) Expression
Creates special Expression body when Limit value is not defined.
BuildValueTypeExpressionBody(Expression) Expression
Creates special Expression body when T is value non-nullable type.
GetComparerExpression(Expression, Expression) bool
Gets Expression for _comparer method call with values.

Operators

Name Value Summary
explicit operator Expression(ComplexSpecification<T>) Expression
Inherited from ComplexSpecification<T>
implicit operator Expression<Func<T, bool>>(ComplexSpecification<T>) Expression<Func<T, bool>>
Inherited from ComplexSpecification<T>
implicit operator Func<T, bool>(ValidationSpecification<T>) Func<T, bool>
Inherited from ValidationSpecification<T>

Extension Methods

Name Value Summary
And<T, TSpecification>() IComplexSpecification<T>
Creates logical AND Specification with newly created TSpecification.
And<T>() ICompositeSpecification<T>
Creates composite Specification proxy for final logical AND Specification.
And<T>(ISpecification<T>) IComplexSpecification<T>
Creates logical AND Specification.
AndNot<T, TSpecification>() IComplexSpecification<T>
Creates logical AND Specification with newly created and negated TSpecification.
AndNot<T>() ICompositeSpecification<T>
Creates composite Specification proxy for final logical AND Specification. Second Specification is negated.
AndNot<T>(ISpecification<T>) IComplexSpecification<T>
Creates logical AND Specification with negated other.
AsComplexSpecification<T>() IComplexSpecification<T>
Converts Specification to complex Specification.
AsExpression<T>() Expression<Func<T, bool>>
Converts Specification to Linq Expression<T>.
AsPredicate<T>() Func<T, bool>
Converts Specification to Func<T, TResult> predicate.
Not<T>() IComplexSpecification<T>
Creates logical NOT Specification.
Or<T, TSpecification>() IComplexSpecification<T>
Creates logical OR Specification with newly created TSpecification.
Or<T>() ICompositeSpecification<T>
Creates composite Specification proxy for final logical OR Specification.
Or<T>(ISpecification<T>) IComplexSpecification<T>
Creates logical OR Specification.
OrNot<T, TSpecification>() IComplexSpecification<T>
Creates logical OR Specification with newly created and negated TSpecification.
OrNot<T>() ICompositeSpecification<T>
Creates composite Specification proxy for final logical OR Specification. Second Specification is negated.
OrNot<T>(ISpecification<T>) IComplexSpecification<T>
Creates logical OR Specification with negated other.
WithMessage<T>(Func<T, IReadOnlyDictionary<string, object>, string>) IComplexSpecification<T>
Creates validation Specification proxy with specific error message factory where not satisfied by.
WithMessage<T>(Func<T, string>) IComplexSpecification<T>
Creates validation Specification proxy with specific error message factory where not satisfied by.
WithMessage<T>(string) IComplexSpecification<T>
Creates validation Specification proxy with specific error message where not satisfied by.
GitHub