/// <summary>
		/// Construcs an <see cref="SpecificationQueryComponent"/> using the given <paramref name="specification"/>.
		/// </summary>
		/// <param name="specification">The <see cref="Specification"/>.</param>
		/// <exception cref="ArgumentNullException">Thrown if <paramref name="specification"/> is null.</exception>
		public SpecificationQueryComponent(Specification specification)
		{
			// validate arguments
			if (specification == null)
				throw new ArgumentNullException("specification");

			// set value
			this.specification = specification;
		}
Esempio n. 2
0
		/// <summary>
		/// Constructs a negated <see cref="Specification"/> of the given <paramref name="specification"/>.
		/// </summary>
		/// <param name="specification">The <see cref="Specification"/> which to negate.</param>
		/// <exception cref="ArgumentNullException">Thrown if <paramref name="specification"/> is null.</exception>
		public Negation(Specification specification)
		{
			// validate arguments
			if (specification == null)
				throw new ArgumentNullException("specification");

			// set the value
			this.specification = specification;
		}
		/// <summary>
		/// Constructs a negated <see cref="Specification"/> of the given <paramref name="specification"/>.
		/// </summary>
		/// <param name="specification">The <see cref="Specification"/> which to negate.</param>
		/// <exception cref="ArgumentNullException">Thrown if <paramref name="specification"/> is null.</exception>
		public static Specification Not(Specification specification)
		{
			// validate arguments
			if (specification == null)
				throw new ArgumentNullException("specification");

			// create the specification
			return new Negation(specification);
		}
		/// <summary>
		/// Creats a <see cref="Negation"/>.
		/// </summary>
		/// <param name="context">The <see cref="IMansionContext"/>.</param>
		/// <param name="specification">The <see cref="Specification"/> which to negate.</param>
		/// <returns>Returns the created <see cref="Specification"/>.</returns>
		public Specification Evaluate(IMansionContext context, Specification specification)
		{
			// validate arguments
			if (context == null)
				throw new ArgumentNullException("context");
			if (specification == null)
				throw new ArgumentNullException("specification");

			// create the specification
			return SpecificationFactory.Not(specification);
		}
		/// <summary>
		/// Adds the given <paramref name="specification"/> to this composite specification.
		/// </summary>
		/// <param name="specification">The <see cref="Specification"/> which to add.</param>
		/// <returns>Returns the instance to allow chaining.</returns>
		/// <exception cref="ArgumentNullException">Thrown if <paramref name="specification"/> is null.</exception>
		public CompositeSpecification Add(Specification specification)
		{
			// validate arguments
			if (specification == null)
				throw new ArgumentNullException("specification");

			// add to the list
			components.Add(specification);

			// return this to allow chaining
			return this;
		}