Introducción
En la entrada anterior vimos como crear validaciones agregando atributos a nuestras clases, ahora vamos a ver como podemos hacer el mismo trabajo sin tocar para nada las clases, incluso podemos aplicar reglas de validación a clases a las cuales no tenemos acceso al código, todo gracias al VAP.
Comencemos
Tomemos nuestra clase y quitemos todos los atributos.
1: public class Persona
2: {
3: private int _edad;
4: private string _nombre;
5: private string _apellido;
6: private string _email;
7:
8: public string Email
9: {
10: get { return _email; }
11: set { _email = value; }
12: }
13: public string Apellido
14: {
15: get { return _apellido; }
16: set { _apellido = value; }
17: }
18: public string Nombre
19: {
20: get { return _nombre; }
21: set { _nombre = value; }
22: }
23: public int Edad
24: {
25: get { return _edad; }
26: set { _edad = value; }
27: }
28: }
Ahora, agregamos un App.Config y lo abrimos con el editor de EntLib. Acto seguimos hacemos click derecho y seleccionamos Add Validation Application Block
Acto seguido seleccionado Add New Rule Set y le ponemos de nombre Default
Luego agregamos un nuevo tipo, con esto vamos a agregar nuestra clase Persona.
Buscamos el tipo en el cuadro que aparece y luego hacemos botón derecho y selecionamos Choose Members
Y seleccionamos las propiedades que queremos validar
Hacemos botón derecho sobre el Apellido (por ejemplo) y seleccionado New -> Not Null Validator
Presionamos F4 y modificamos sus propiedades para que nos muestre un mensaje en caso de no superar la validación desde la propiedad Message Template
Y seguimos agregando los validadores, utilizamos el código de validación que vimos antes
1: Persona p = new Persona();
2:
3: Console.WriteLine("Ingrese nombre");
4: p.Nombre = Console.ReadLine();
5:
6: Console.WriteLine("Ingrese apellido");
7: p.Apellido = Console.ReadLine();
8:
9: Console.WriteLine("Ingrese edad");
10: p.Edad = Convert.ToInt32(Console.ReadLine());
11:
12: Console.WriteLine("Ingrese email");
13: p.Email = Console.ReadLine();
14:
15: ValidationResults results = ValidationFactory.CreateValidator("Default").Validate(p);
16:
17: if (!results.IsValid)
18: {
19:
20: StringBuilder sb = new StringBuilder("Errores de validación");
21: sb.AppendLine();
22:
23: foreach (ValidationResult result in results)
24: {
25: sb.AppendLine(result.Message);
26: }
27:
28: Console.WriteLine(sb.ToString());
29: }
30: else
31: {
32: Console.WriteLine("todo bien");
33: }
Lo corremos y eureka!! funciona, buenísimo y muy flexible. En la próxima vemos como hacer nuestros propios validadores.
No hay comentarios:
Publicar un comentario