ISpecification<T> Interface

Summary

Base generic Specification interface.
graph BT Type-.->Interface0["ISpecification"] click Interface0 "/FluentSpecification/api/FluentSpecification.Abstractions/ISpecification" Type["ISpecification<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["ValidationSpecification<T>"]-.->Type click Implementing6 "/FluentSpecification/api/FluentSpecification.Core/ValidationSpecification_1" Implementing7["ContainsSpecification"]-.->Type click Implementing7 "/FluentSpecification/api/FluentSpecification.Common/ContainsSpecification" Implementing8["IValidationSpecification<T>"]-.->Type click Implementing8 "/FluentSpecification/api/FluentSpecification.Abstractions.Generic/IValidationSpecification_1" Implementing9["LessThanSpecification<T>"]-.->Type click Implementing9 "/FluentSpecification/api/FluentSpecification.Common/LessThanSpecification_1" Implementing10["BaseGreaterCompareSpecification<T>"]-.->Type click Implementing10 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseGreaterCompareSpecification_1" Implementing11["BaseBetweenSpecification<T>"]-.->Type click Implementing11 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseBetweenSpecification_1" Implementing12["LessThanOrEqualSpecification<T>"]-.->Type click Implementing12 "/FluentSpecification/api/FluentSpecification.Common/LessThanOrEqualSpecification_1" Implementing13["ExpressionSpecification<T>"]-.->Type click Implementing13 "/FluentSpecification/api/FluentSpecification.Common/ExpressionSpecification_1" Implementing14["TrueSpecification"]-.->Type click Implementing14 "/FluentSpecification/api/FluentSpecification.Common/TrueSpecification" Implementing15["CastSpecification<T, TCast>"]-.->Type click Implementing15 "/FluentSpecification/api/FluentSpecification.Core.Composite/CastSpecification_2" Implementing16["NegatableValidationSpecification<T>"]-.->Type click Implementing16 "/FluentSpecification/api/FluentSpecification.Core/NegatableValidationSpecification_1" Implementing17["MatchSpecification"]-.->Type click Implementing17 "/FluentSpecification/api/FluentSpecification.Common/MatchSpecification" Implementing18["BaseCompareSpecification<T>"]-.->Type click Implementing18 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseCompareSpecification_1" Implementing19["FalseSpecification"]-.->Type click Implementing19 "/FluentSpecification/api/FluentSpecification.Common/FalseSpecification" Implementing20["ILinqSpecification<T>"]-.->Type click Implementing20 "/FluentSpecification/api/FluentSpecification.Abstractions.Generic/ILinqSpecification_1" Implementing21["AllSpecification<T, TType>"]-.->Type click Implementing21 "/FluentSpecification/api/FluentSpecification.Common/AllSpecification_2" Implementing22["IComplexSpecification<T>"]-.->Type click Implementing22 "/FluentSpecification/api/FluentSpecification.Abstractions.Generic/IComplexSpecification_1" Implementing23["NullSpecification<T>"]-.->Type click Implementing23 "/FluentSpecification/api/FluentSpecification.Common/NullSpecification_1" Implementing24["EmailSpecification"]-.->Type click Implementing24 "/FluentSpecification/api/FluentSpecification.Common/EmailSpecification" Implementing25["ComplexSpecification<T>"]-.->Type click Implementing25 "/FluentSpecification/api/FluentSpecification.Core/ComplexSpecification_1" Implementing26["EqualSpecification<T>"]-.->Type click Implementing26 "/FluentSpecification/api/FluentSpecification.Common/EqualSpecification_1" Implementing27["GreaterThanSpecification<T>"]-.->Type click Implementing27 "/FluentSpecification/api/FluentSpecification.Common/GreaterThanSpecification_1" Implementing28["CompositeSpecification<T>"]-.->Type click Implementing28 "/FluentSpecification/api/FluentSpecification.Core.Composite/CompositeSpecification_1" Implementing29["MinLengthSpecification<T>"]-.->Type click Implementing29 "/FluentSpecification/api/FluentSpecification.Common/MinLengthSpecification_1" Implementing30["IsTypeSpecification<T>"]-.->Type click Implementing30 "/FluentSpecification/api/FluentSpecification.Common/IsTypeSpecification_1" Implementing31["InclusiveBetweenSpecification<T>"]-.->Type click Implementing31 "/FluentSpecification/api/FluentSpecification.Common/InclusiveBetweenSpecification_1" Implementing32["GreaterThanOrEqualSpecification<T>"]-.->Type click Implementing32 "/FluentSpecification/api/FluentSpecification.Common/GreaterThanOrEqualSpecification_1" Implementing33["OrSpecification<T>"]-.->Type click Implementing33 "/FluentSpecification/api/FluentSpecification.Core.Composite/OrSpecification_1" Implementing34["AnySpecification<T, TType>"]-.->Type click Implementing34 "/FluentSpecification/api/FluentSpecification.Common/AnySpecification_2" Implementing35["BaseLessCompareSpecification<T>"]-.->Type click Implementing35 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseLessCompareSpecification_1" Implementing36["NotSpecification<T>"]-.->Type click Implementing36 "/FluentSpecification/api/FluentSpecification.Core.Composite/NotSpecification_1" Implementing37["LengthSpecification<T>"]-.->Type click Implementing37 "/FluentSpecification/api/FluentSpecification.Common/LengthSpecification_1" Implementing38["EmptySpecification<T>"]-.->Type click Implementing38 "/FluentSpecification/api/FluentSpecification.Common/EmptySpecification_1" Implementing39["LengthBetweenSpecification<T>"]-.->Type click Implementing39 "/FluentSpecification/api/FluentSpecification.Common/LengthBetweenSpecification_1" Implementing40["ContainsSpecification<T, TType>"]-.->Type click Implementing40 "/FluentSpecification/api/FluentSpecification.Common/ContainsSpecification_2" Implementing41["BaseCollectionSpecification<T, TType>"]-.->Type click Implementing41 "/FluentSpecification/api/FluentSpecification.Common.Abstractions/BaseCollectionSpecification_2"

Syntax

[PublicAPI]
public interface ISpecification<in T> : ISpecification

Remarks

Default "handler" for all kinds of generic Specifications.

Attributes

Type Description
PublicAPI

Type Parameters

Name Description
T Type of candidate to verify.

Methods

Name Value Summary
IsSatisfiedBy(T) bool
Checks if Specification is satisfied by candidate object.

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