예제 #1
0
 /// <summary>
 /// Valida una regla
 /// </summary>
 /// <param name="delegateRule"></param>
 /// <param name="primaryProperty"></param>
 /// <param name="secundaryProperty"></param>
 public ValidateRule(DelegateRule delegateRule, IPropertyInfo primaryProperty, IPropertyInfo secundaryProperty = null)
     : base(primaryProperty)
 {
     _delegateRule = delegateRule;
     if (secundaryProperty != null)
     {
         InputProperties.Add(primaryProperty);
         InputProperties.Add(secundaryProperty);
     }
 }
예제 #2
0
        protected override bool EvaluateInternal(object propValue, object expectedValue)
        {
            if (DelegateRule == null)
            {
                Type internalType = propValue.GetType();

                var x = Expression.Parameter(internalType, "x");
                var y = Expression.Parameter(internalType, "y");

                var lambda = Expression.Lambda(Expression.GreaterThan(x, y), x, y);
                DelegateRule = lambda.Compile();
            }

            return((bool)DelegateRule.DynamicInvoke(propValue, expectedValue));
        }