I've created the following method :
public ValidationResult Validate<TValue>(T instance, Expression<Func<T, object>> propertyExpression, TValue value) { MemberExpression memberExpr;if (propertyExpression.Body is MemberExpression) { memberExpr = propertyExpression.Body as MemberExpression; }elseif (propertyExpression.Body is UnaryExpression) {var unaryExpr = propertyExpression.Body as UnaryExpression;if (unaryExpr == null) thrownew ArgumentException(); memberExpr = unaryExpr.Operand as MemberExpression; }else {thrownew ArgumentException(); }if (memberExpr == null) thrownew ArgumentException();var propertyInfo = memberExpr.Member as PropertyInfo;if (propertyInfo == null) thrownew ArgumentException(); propertyInfo.SetValue(instance, value, null);returnthis.Validate(instance, propertyExpression); }