Ejemplo n.º 1
0
        public ITargetTypeExpression <TMessage, TCommand> Rule <T>() where T : IValidationRule
        {
            var instance = new ValidationRuleInstance {
                ValidationRuleType = typeof(T)
            };

            _instances.Add(instance);
            return(ForMessage());
        }
Ejemplo n.º 2
0
        public ITargetTypeExpression <TMessage, TCommand> Rule <T>(Expression <Func <TCommand, object> > toCheck)
            where T : IValidationRule
        {
            var instance = new ValidationRuleInstance {
                ValidationRuleType = typeof(T), ToCheckExpression = toCheck
            };

            FillUIExpression(toCheck, instance);

            _instances.Add(instance);

            instance.ArrayRule = toCheck.IsArray();

            return(this);
        }
Ejemplo n.º 3
0
        public ITargetTypeExpression <TMessage, TCommand> Rule <T>(Expression <Func <TCommand, object> > toCheck,
                                                                   Expression <Func <TCommand, object> > toCompare)
            where T : ICrossReferencedValidationRule
        {
            var instance = new ValidationRuleInstance
            {
                ValidationRuleType  = typeof(T),
                ToCheckExpression   = toCheck,
                ToCompareExpression = toCompare
            };

            FillUIExpression(toCompare, instance);

            _instances.Add(instance);
            return(this);
        }
Ejemplo n.º 4
0
        private static void FillUIExpression <TTarget>(Expression <Func <TCommand, TTarget> > toCheck,
                                                       ValidationRuleInstance instance)
        {
            var member = toCheck.GetMember();

            if (member == null)
            {
                return;
            }

            var destinationMember = typeof(TMessage).GetProperty(member.Name);

            if (destinationMember == null)
            {
                return;
            }

            if ((member.GetMemberType() == typeof(DateTime?)) &&
                (typeof(IDateAndTime).IsAssignableFrom(destinationMember.PropertyType)))
            {
                var dateProperty = destinationMember.PropertyType.GetProperty("Date",
                                                                              BindingFlags.Public | BindingFlags.Instance);

                var instanceParameter    = Expression.Parameter(typeof(TMessage), "target");
                var memberExpr           = Expression.Property(instanceParameter, destinationMember);
                var dateGetterExpression = Expression.Property(memberExpr, dateProperty);

                var lambda = Expression.Lambda <Func <TMessage, object> >(dateGetterExpression,
                                                                          instanceParameter);

                instance.UIAttributeExpression = lambda;
            }
            else
            {
                var instanceParameter = Expression.Parameter(typeof(TMessage), "target");
                var memberExpr        = Expression.Property(instanceParameter, destinationMember);

                var lambda =
                    Expression.Lambda <Func <TMessage, object> >(Expression.Convert(memberExpr, typeof(object)), instanceParameter);

                instance.UIAttributeExpression = lambda;
            }
        }
Ejemplo n.º 5
0
 private static void FillUIExpression(Expression <Func <TCommand, object> > toCheck, ValidationRuleInstance instance)
 {
     FillUIExpression <object>(toCheck, instance);
 }