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