|
|
|
|
using System;
|
|
|
|
|
using System.Runtime.Serialization;
|
|
|
|
|
|
|
|
|
|
namespace ZeroLevel.Specification
|
|
|
|
|
{
|
|
|
|
|
[Serializable]
|
|
|
|
|
[DataContract]
|
|
|
|
|
public abstract class BaseSpecification<T> : ISpecification<T>
|
|
|
|
|
{
|
|
|
|
|
public abstract bool IsSatisfiedBy(T o);
|
|
|
|
|
|
|
|
|
|
public ISpecification<T> And(ISpecification<T> specification)
|
|
|
|
|
{
|
|
|
|
|
return new AndSpecification<T>(this, specification);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ISpecification<T> Or(ISpecification<T> specification)
|
|
|
|
|
{
|
|
|
|
|
return new OrSpecification<T>(this, specification);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public ISpecification<T> Not()
|
|
|
|
|
{
|
|
|
|
|
return new NotSpecification<T>(this);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|