namespace MyCode.Project.Infrastructure { /// /// Represents the base class for composite specifications. /// /// The type of the object to which the specification is applied. public abstract class CompositeSpecification : Specification, ICompositeSpecification { #region Private Fields private readonly ISpecification left; private readonly ISpecification right; #endregion #region Ctor /// /// Constructs a new instance of CompositeSpecification<T> class. /// /// The first specification. /// The second specification. public CompositeSpecification(ISpecification left, ISpecification right) { this.left = left; this.right = right; } #endregion #region ICompositeSpecification Members /// /// Gets the first specification. /// public ISpecification Left { get { return this.left; } } /// /// Gets the second specification. /// public ISpecification Right { get { return this.right; } } #endregion } }