2008-12-16 12 views
5

Me gusta el bloque de aplicación de validación de la biblioteca de empresa :-)
Ahora me gustaría utilizar las anotaciones de datos en Winforms, ya que también utilizamos los datos dinámicos asp.net. Para que tengamos tecnologías comunes en toda la empresa.
Y también las anotaciones de datos deberían ser más fáciles de usar.¿Cómo utilizar validadores de anotación de datos en Winforms?

¿Cómo puedo hacer algo similar en Winforms como Stephen Walter did within asp.net MVC?

Respuesta

9

Adapté encontrado una solución al http://blog.codeville.net/category/validation/page/2/

public class DataValidator 
    { 
    public class ErrorInfo 
    { 
     public ErrorInfo(string property, string message) 
     { 
      this.Property = property; 
      this.Message = message; 
     } 

     public string Message; 
     public string Property; 
    } 

    public static IEnumerable<ErrorInfo> Validate(object instance) 
    { 
     return from prop in instance.GetType().GetProperties() 
       from attribute in prop.GetCustomAttributes(typeof(ValidationAttribute), true).OfType<ValidationAttribute>() 
       where !attribute.IsValid(prop.GetValue(instance, null)) 
       select new ErrorInfo(prop.Name, attribute.FormatErrorMessage(string.Empty)); 
    } 
} 

Esto permitirá utilizar el siguiente código para validar cualquier objeto utilizando la siguiente sintaxis:

var errors = DataValidator.Validate(obj); 

if (errors.Any()) throw new ValidationException(); 
+0

eso me gusta. Tengo que intentarlo, pero parece que hace el trabajo ... La llamada manual a Validate() no es tan buena, pero podríamos evitar esto, implementando eso en nuestros UserControls –

+0

Puede su Validación() no ser reemplazado por System.ComponentModel.DataAnnotations.Validator? –

+0

@Rolf: solo en Silverlight o .Net 4+ – Darbio

Cuestiones relacionadas