예제 #1
0
        public override Expression <Func <T, bool> > ToExpression()
        {
            var spec      = _specification.ToExpression();
            var parameter = Expression.Parameter(typeof(T));
            var body      = Expression.Not(spec.Body);

            body = (UnaryExpression) new ParameterReplacer(parameter).Visit(body);

            return(Expression.Lambda <Func <T, bool> >(
                       body ?? throw new InvalidOperationException("Null expression body"), parameter));
        }
예제 #2
0
        public override Expression <Func <T, bool> > ToExpression()
        {
            var leftExpression  = _leftSpecification.ToExpression();
            var rightExpression = _rightSpecification.ToExpression();

            var parameter = Expression.Parameter(typeof(T));
            var body      = Expression.AndAlso(leftExpression.Body, rightExpression.Body);

            body = (BinaryExpression) new ParameterReplacer(parameter).Visit(body);

            return(Expression.Lambda <Func <T, bool> >(
                       body ?? throw new InvalidOperationException("Null expression body"), parameter));
        }
예제 #3
0
 public IScenario <IPosition> Build()
 {
     return(new LiquidationScenario(_scenarioId, string.Empty, 10.0, _specification.ToExpression()));
 }