IValidationSpecification<T> Interface

Summary

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

Syntax

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

Remarks

Default "handler" for all kinds of generic Specifications for objects validation.

Can be used for scenarios, where single objects needs verification with errors prepared for e.g. UI, like DTOs.

Attributes

Type Description
PublicAPI

Type Parameters

Name Description
T Type of candidate to verify.

Methods

Name Value Summary
IsSatisfiedBy(T, SpecificationResult) bool
Checks if Specification is satisfied by candidate object. Returns validation result no matter is satisfied or not.

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