Ejemplo n.º 1
0
        public void ThrowIf(LambdaExpression condition, string message)
        {
            if (condition == null)
            {
                throw new ArgumentNullException("condition");
            }

            if (condition.Parameters.Count != 1 || condition.Parameters.Single().Type != type)
            {
                throw new InvalidOperationException("Invalid expression parameters");
            }

            if (condition.ReturnType != typeof(bool))
            {
                throw new InvalidOperationException("Invalid return type, must be bool");
            }

            var data = new TypeModifierData
            {
                Type             = type,
                Message          = message,
                ThrowIfCondition = condition
            };

            mapper.Data.AddTypeModifierData(data, MappingSides.Source);
        }
Ejemplo n.º 2
0
        public void ThrowIf(LambdaExpression condition, string message)
        {
            if (condition == null) throw new ArgumentNullException("condition");

              if (condition.Parameters.Count != 1 || condition.Parameters.Single().Type != type)
              {
            throw new InvalidOperationException("Invalid expression parameters");
              }

              if (condition.ReturnType != typeof(bool))
              {
            throw new InvalidOperationException("Invalid return type, must be bool");
              }

              var data = new TypeModifierData
              {
            Type = type,
            Message = message,
            ThrowIfCondition = condition
              };

              mapper.Data.AddTypeModifierData(data, MappingSides.Source);
        }
Ejemplo n.º 3
0
        private Expression ProcessTypeModifierData(TypeModifierData data, Expression typeParam)
        {
            if (data.ThrowIfCondition != null)
              {
            var param = data.ThrowIfCondition.Parameters.Single();

            mapProcessor.ParametersToReplace.Add(new ExpressionTuple(param, typeParam));

            var message = Expression.Constant(data.Message);

            var throwException = Expression.Throw(Expression.New(typeof(MappingTerminatedException).GetConstructor(new[] { typeof(string) }), message));

            var ifNotConditionThrow = Expression.IfThen(data.ThrowIfCondition.Body, throwException);

            return ifNotConditionThrow;
              }

              return null;
        }