/// <summary> /// Gets a new specification expression which corresponds to the logical /// negation of the specified object: <c>NOT</c>. /// </summary> /// <returns>A specification expression.</returns> /// <param name="spec">A specification expression.</param> /// <typeparam name="T">The generic type of the specification.</typeparam> public static ISpecificationExpression <T> Not <T>(this ISpecificationExpression <T> spec) { return(Spec.Expr(spec.GetExpressionOrThrow().Not())); }
/// <summary> /// Gets a new specification function which corresponds to the logical /// negation of the specified object: <c>NOT</c>. /// </summary> /// <returns>A specification function.</returns> /// <param name="spec">A specification function.</param> /// <typeparam name="T">The generic type of the specification.</typeparam> public static ISpecificationFunction <T> Not <T>(this ISpecificationFunction <T> spec) { var func = GetFunction(spec); return(Spec.Func <T>(o => !func(o))); }
/// <summary> /// Gets a specification function which copies the specified specification expression. /// </summary> /// <returns>A specification function.</returns> /// <param name="spec">A specification expression.</param> /// <typeparam name="T">The generic type of the specification.</typeparam> public static ISpecificationFunction <T> AsSpecificationFunction <T>(this ISpecificationExpression <T> spec) { return(Spec.Func(spec.GetFunction())); }