IComplexSpecification<T> Interface

Summary

Base generic Specification interface for complex solutions with validation and Linq support.
graph BT Type-.->Interface0["IValidationSpecification<T>"] Type-.->Interface1["ILinqSpecification<T>"] Type-.->Interface2["ILinqSpecification"] click Interface2 "/FluentSpecification/api/FluentSpecification.Abstractions/ILinqSpecification" Type-.->Interface3["ISpecification<T>"] Type-.->Interface4["ISpecification"] click Interface4 "/FluentSpecification/api/FluentSpecification.Abstractions/ISpecification" Type["IComplexSpecification<T>"] class Type type-node Implementing0["CreditCardSpecification"]-.->Type click Implementing0 "/FluentSpecification/api/FluentSpecification.Common/CreditCardSpecification" Implementing1["MaxLengthSpecification<T>"]-.->Type click Implementing1 "/FluentSpecification/api/FluentSpecification.Common/MaxLengthSpecification_1" Implementing2["AndSpecification<T>"]-.->Type click Implementing2 "/FluentSpecification/api/FluentSpecification.Core.Composite/AndSpecification_1" Implementing3["ExclusiveBetweenSpecification<T>"]-.->Type click Implementing3 "/FluentSpecification/api/FluentSpecification.Common/ExclusiveBetweenSpecification_1" Implementing4["PropertySpecification<T, TProperty>"]-.->Type click Implementing4 "/FluentSpecification/api/FluentSpecification.Core.Composite/PropertySpecification_2" Implementing5["BaseLengthSpecification<T>"]-.->Type click Implementing5 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseLengthSpecification_1" Implementing6["ContainsSpecification"]-.->Type click Implementing6 "/FluentSpecification/api/FluentSpecification.Common/ContainsSpecification" Implementing7["LessThanSpecification<T>"]-.->Type click Implementing7 "/FluentSpecification/api/FluentSpecification.Common/LessThanSpecification_1" Implementing8["BaseGreaterCompareSpecification<T>"]-.->Type click Implementing8 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseGreaterCompareSpecification_1" Implementing9["BaseBetweenSpecification<T>"]-.->Type click Implementing9 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseBetweenSpecification_1" Implementing10["LessThanOrEqualSpecification<T>"]-.->Type click Implementing10 "/FluentSpecification/api/FluentSpecification.Common/LessThanOrEqualSpecification_1" Implementing11["ExpressionSpecification<T>"]-.->Type click Implementing11 "/FluentSpecification/api/FluentSpecification.Common/ExpressionSpecification_1" Implementing12["TrueSpecification"]-.->Type click Implementing12 "/FluentSpecification/api/FluentSpecification.Common/TrueSpecification" Implementing13["CastSpecification<T, TCast>"]-.->Type click Implementing13 "/FluentSpecification/api/FluentSpecification.Core.Composite/CastSpecification_2" Implementing14["MatchSpecification"]-.->Type click Implementing14 "/FluentSpecification/api/FluentSpecification.Common/MatchSpecification" Implementing15["BaseCompareSpecification<T>"]-.->Type click Implementing15 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseCompareSpecification_1" Implementing16["FalseSpecification"]-.->Type click Implementing16 "/FluentSpecification/api/FluentSpecification.Common/FalseSpecification" Implementing17["AllSpecification<T, TType>"]-.->Type click Implementing17 "/FluentSpecification/api/FluentSpecification.Common/AllSpecification_2" Implementing18["NullSpecification<T>"]-.->Type click Implementing18 "/FluentSpecification/api/FluentSpecification.Common/NullSpecification_1" Implementing19["EmailSpecification"]-.->Type click Implementing19 "/FluentSpecification/api/FluentSpecification.Common/EmailSpecification" Implementing20["ComplexSpecification<T>"]-.->Type click Implementing20 "/FluentSpecification/api/FluentSpecification.Core/ComplexSpecification_1" Implementing21["EqualSpecification<T>"]-.->Type click Implementing21 "/FluentSpecification/api/FluentSpecification.Common/EqualSpecification_1" Implementing22["GreaterThanSpecification<T>"]-.->Type click Implementing22 "/FluentSpecification/api/FluentSpecification.Common/GreaterThanSpecification_1" Implementing23["CompositeSpecification<T>"]-.->Type click Implementing23 "/FluentSpecification/api/FluentSpecification.Core.Composite/CompositeSpecification_1" Implementing24["MinLengthSpecification<T>"]-.->Type click Implementing24 "/FluentSpecification/api/FluentSpecification.Common/MinLengthSpecification_1" Implementing25["IsTypeSpecification<T>"]-.->Type click Implementing25 "/FluentSpecification/api/FluentSpecification.Common/IsTypeSpecification_1" Implementing26["InclusiveBetweenSpecification<T>"]-.->Type click Implementing26 "/FluentSpecification/api/FluentSpecification.Common/InclusiveBetweenSpecification_1" Implementing27["GreaterThanOrEqualSpecification<T>"]-.->Type click Implementing27 "/FluentSpecification/api/FluentSpecification.Common/GreaterThanOrEqualSpecification_1" Implementing28["OrSpecification<T>"]-.->Type click Implementing28 "/FluentSpecification/api/FluentSpecification.Core.Composite/OrSpecification_1" Implementing29["AnySpecification<T, TType>"]-.->Type click Implementing29 "/FluentSpecification/api/FluentSpecification.Common/AnySpecification_2" Implementing30["BaseLessCompareSpecification<T>"]-.->Type click Implementing30 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseLessCompareSpecification_1" Implementing31["NotSpecification<T>"]-.->Type click Implementing31 "/FluentSpecification/api/FluentSpecification.Core.Composite/NotSpecification_1" Implementing32["LengthSpecification<T>"]-.->Type click Implementing32 "/FluentSpecification/api/FluentSpecification.Common/LengthSpecification_1" Implementing33["EmptySpecification<T>"]-.->Type click Implementing33 "/FluentSpecification/api/FluentSpecification.Common/EmptySpecification_1" Implementing34["LengthBetweenSpecification<T>"]-.->Type click Implementing34 "/FluentSpecification/api/FluentSpecification.Common/LengthBetweenSpecification_1" Implementing35["ContainsSpecification<T, TType>"]-.->Type click Implementing35 "/FluentSpecification/api/FluentSpecification.Common/ContainsSpecification_2" Implementing36["BaseCollectionSpecification<T, TType>"]-.->Type click Implementing36 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseCollectionSpecification_2"

Syntax

[PublicAPI]
public interface IComplexSpecification<T> : IValidationSpecification<T>, ILinqSpecification<T>, 
    ILinqSpecification, ISpecification<T>, ISpecification

Remarks

Default "handler" for all kinds of complex Specifications.

Attributes

Type Description
PublicAPI

Type Parameters

Name Description
T Type of candidate to verify.

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