Documentation

Concept

Specification Design Pattern Main concept of Specifications Design Pattern and FluentSpecification.
Abstraction Description of FluentSpecification.Abstractions library content (interfaces) and differences between classic Specification pattern.
Validation Result What information contains SpecificationResult object, and how to use them.
Core Specifications Description of FluentSpecification.Core library content. Core Specifications, abstract types and "utils".
Common Specifications Description of FluentSpecification library content. Common Specifications and Fluent API construction.
Entity Framework Support Entity Framework support description.

Usage

How to start with FluentSpecification.

Description of installation process, how to create Specifications and how to use them.

Installation Where FluentSpecification can be found and how to install it.
Building Specifications How Specifications can be build, with or without Fluent API.
Candidate Verification How to check, if Specification is satisfied by candidate. Describes also Validation and Linq scenarios.
Custom Validation Messages How to customize or translate Validation messages when Specification is not satisfied by candidate.

Custom Specifications

This section describes how to create custom specifications, from scratch based on FluentSpecification.Abstractions or using base Specification classes in FluentSpecification.Core.

Specification Custom, normall Specification implementation.
Validation Specification Custom Specification implementation for validation scenarios.
Linq Specification Custom Specification implementation for Linq.
Negatable Specification Special negation handling for custom Specifications.
All in one Custom Specification with IComplexSpecification<T> usage.
Fluent API extensions How to create custom extensions to Fluent API.
GitHub