| Feature | Is supported |
|---|---|
| Null safe | |
| Validation | |
| EF Core | |
| EF 6 | |
| External Comparer |
Validation result
Error
"Value is not between [{From}] and [{To}]".
"Value is between [{From}] and [{To}]" - for negation.
Parameters
| Parameter | Description |
|---|---|
| From | "From" value passed in constructor. |
| To | "To" value passed in constructor. |
Info
Checks if candidate object is between (exclusive) min and max value.
Specification for comparison use (in order):
IComparer<T>- if available.- < and > operator - if defined for T.
CompareTo()method - if T implementsIComparable<T>.CompareTo(Object)method - if T implementsIComparable.
Note that, null is always the lowest value.
Usage
var spec = Specification.ExclusiveBetween<double?>(1.0, 1.45);
spec.IsSatisfiedBy(1.43); // true
spec.IsSatisfiedBy(5.0); // false
spec.IsSatisfiedBy(null); // false
As property
var customerSpec = Specification.ExclusiveBetween<Customer, int>(
c => c.CustomerId, 0, 100);
customerSpec.IsSatisfiedBy(new Customer { CustomerId = 1 }); // true
customerSpec.IsSatisfiedBy(new Customer { CustomerId = 100 }); // false
Not Exclusive Between
var spec = Specification.NotExclusiveBetween<double?>(1.0, 1.45);
spec.IsSatisfiedBy(1.43); // false
spec.IsSatisfiedBy(5.0); // true
spec.IsSatisfiedBy(null); // true
As property
var customerSpec = Specification.NotExclusiveBetween<Customer, int>(
c => c.CustomerId, 0, 100);
customerSpec.IsSatisfiedBy(new Customer { CustomerId = 1 }); // false
customerSpec.IsSatisfiedBy(new Customer { CustomerId = 100 }); // true
Comparer
ExclusiveBetweenSpecification<T> supports IComparer<T>.
var spec = Specification.ExclusiveBetweenSpecification<double>(
1.0, 1.5, Comparer<double>.Default);
EF 6 support
ExclusiveBetweenSpecification<T> works correctly in EF 6 solution, when T is primitive or enum type.
Non primitive types, may generate NotSupportedException.

