/// <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); } }
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)); }