コード例 #1
0
        /// <summary>
        /// Valida uma propriedade de um objeto
        /// </summary>
        /// <param name="propertyValue">Valor da propriedade</param>
        /// <param name="propertyName">Nome da propriedade</param>
        /// <param name="targetObject">Objeto alvo</param>
        /// <returns>Objeto aonde o resultado da validação será anexado</returns>
        public virtual ValidationResult ValidateProperty(IStateControl targetObject, string propertyName, object propertyValue)
        {
            var result = new ValidationResult();

            this.ValidateProperty(targetObject, propertyName, propertyValue, ref result);
            return(result);
        }
コード例 #2
0
        /// <summary>
        /// Valida um objeto
        /// </summary>
        /// <param name="targetObject">Objeto a ser validado</param>
        /// <param name="validationResult">Objeto aonde o resultado da validação será anexado</param>
        public virtual void Validate(IStateControl targetObject, ref ValidationResult validationResult)
        {
            targetObject.Require("targetObject").NotNull();
            if (targetObject is IDisposableState && ((IDisposableState)targetObject).IsDisposed)
            {
                return;
            }
            if (validationResult == null)
            {
                validationResult = new ValidationResult();
            }
            var properties = targetObject.GetType().GetProperties(System.Reflection.BindingFlags.Public | System.Reflection.BindingFlags.Instance).Where(f => f.CanRead && !f.GetCustomAttributes(false).Any(x => x is IgnoreValidationAttribute));

            foreach (PropertyInfo property in properties)
            {
                if (property.Name != "IsLocked")
                {
                    var state = targetObject.InstanceState[property.Name];
                    if (state != null && state.Validation != null)
                    {
                        var propertyValue = property.GetValue(targetObject, null);
                        ApplyValidation(state.Validation, property.Name, state.Label, targetObject, propertyValue, ref validationResult);
                    }
                }
            }
        }
コード例 #3
0
        /// <summary>
        /// Valida um objeto
        /// </summary>
        /// <param name="targetObject">Objeto a ser validado</param>
        /// <returns>Resultado da validação</returns>
        public virtual ValidationResult Validate(IStateControl targetObject)
        {
            var result = new ValidationResult();

            this.Validate(targetObject, ref result);
            return(result);
        }
コード例 #4
0
        /// <summary>
        /// Valida uma propriedade de um objeto
        /// </summary>
        /// <param name="propertyValue">Valor da propriedade</param>
        /// <param name="propertyName">Nome da propriedade</param>
        /// <param name="targetObject">Objeto alvo</param>
        /// <param name="validationResult">Objeto aonde o resultado da validação será anexado</param>
        public virtual void ValidateProperty(IStateControl targetObject, string propertyName, object propertyValue, ref ValidationResult validationResult)
        {
            targetObject.Require("targetObject").NotNull();
            propertyName.Require("propertyName").NotNull().NotEmpty();
            var statebleItem = targetObject.InstanceState[propertyName];

            if (statebleItem != null && statebleItem.Validation != null)
            {
                ApplyValidation(statebleItem.Validation, propertyName, statebleItem.Label, targetObject, propertyValue, ref validationResult);
            }
        }
コード例 #5
0
 /// <summary>
 /// Valida uma propriedade de um objeto
 /// </summary>
 /// <param name="targetObject">Objeto alvo</param>
 /// <param name="propertyName">Nome da propriedade</param>
 /// <param name="propertyValue">Valor da propriedade</param>
 /// <returns>Objeto aonde o resultado da validação será anexado</returns>
 public ValidationResult ValidateProperty(IStateControl targetObject, string propertyName, object propertyValue)
 {
     return(new ValidationResult {
         IsValid = true
     });
 }
コード例 #6
0
 /// <summary>
 /// Valida uma propriedade de um objeto
 /// </summary>
 /// <param name="targetObject">Objeto alvo</param>
 /// <param name="propertyName">Nome da propriedade</param>
 /// <param name="propertyValue">Valor da propriedade</param>
 /// <param name="validationResult">Objeto aonde o resultado da validação será anexado</param>
 public void ValidateProperty(IStateControl targetObject, string propertyName, object propertyValue, ref ValidationResult validationResult)
 {
 }
コード例 #7
0
 /// <summary>
 /// Valida um objeto
 /// </summary>
 /// <param name="targetObject">Objeto a ser validado</param>
 /// <param name="validationResult">Objeto aonde o resultado da validação será anexado</param>
 public void Validate(IStateControl targetObject, ref ValidationResult validationResult)
 {
 }
コード例 #8
0
 /// <summary>
 /// Valida um objeto
 /// </summary>
 /// <param name="targetObject">Objeto a ser validado</param>
 /// <returns>Resultado da validação</returns>
 public ValidationResult Validate(IStateControl targetObject)
 {
     return(new ValidationResult {
         IsValid = true
     });
 }
コード例 #9
0
 /// <summary>
 /// Aplica a validação.
 /// </summary>
 /// <param name="validation">validação</param>
 /// <param name="propertyName">Nome da propriedade</param>
 /// <param name="propertyLabel">Label da propriedade.</param>
 /// <param name="targetObject">objeto alvo</param>
 /// <param name="propertyValue">valor da propriedade alvo</param>
 /// <param name="validationResult">resultado</param>
 private static void ApplyValidation(IValidator validation, string propertyName, IPropertyLabel propertyLabel, IStateControl targetObject, object propertyValue, ref ValidationResult validationResult)
 {
     if (validation == null)
     {
         return;
     }
     if (validationResult == null)
     {
         validationResult = new ValidationResult();
     }
     validation.DoValidate(targetObject, propertyName, propertyLabel, propertyValue, validationResult, null);
 }