/// <summary> /// Validates the specified property via the supplied method delegate. /// </summary> /// <param name="validationDelegate">The validation delegate.</param> /// <param name="failureMessage">The failure message.</param> /// <param name="propertyName">Name of the property.</param> /// <param name="validationProxy">The validation proxy.</param> /// <returns>Returns an IMessage if validation was not successful, otherwise null is returned to indicate success.</returns> public IValidationMessage ValidateProperty(Func <bool> validationDelegate, IValidationMessage failureMessage, string propertyName, IValidatable validationProxy = null) { if (validationProxy != null) { return(validationProxy.ValidateProperty(validationDelegate, failureMessage, propertyName)); } bool passedValidation = validationDelegate(); if (!passedValidation) { this.AddValidationMessage(failureMessage, propertyName); } else { this.RemoveValidationMessage(failureMessage, propertyName); } return(!passedValidation ? failureMessage : null); }