http://msdn.microsoft.com/en-us/library/cc511802.aspx
Dessa forma, ao invés de validar os objetos dentro das propriedades ou métodos, esses campos podem ser validados
através de Decorators.( [ ] )
Exemplo: ( tirado de http://msdn.microsoft.com/en-us/library/cc511619.aspx )
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration; using Microsoft.Practices.EnterpriseLibrary.Validation; using Microsoft.Practices.EnterpriseLibrary.Validation.Validators; public class Customer { private string firstName; private string lastName; private DateTime dateOfBirth; private string email; private Address address; [StringLengthValidator(1, 50, Ruleset="RuleSetA", MessageTemplate="First Name must be between 1 and 50 characters")] public string FirstName { get { return firstName; } set { firstName = value; } } [StringLengthValidator(1, 50, Ruleset = "RuleSetA", MessageTemplate = "Last Name must be between 1 and 50 characters")] public string LastName { get { return lastName; } set { lastName = value; } } [RelativeDateTimeValidator(-120, DateTimeUnit.Year, -18, DateTimeUnit.Year, Ruleset="RuleSetA", MessageTemplate="Must be 18 years or older.")] public DateTime DateOfBirth { get { return dateOfBirth; } set { dateOfBirth = value; } } [RegexValidator(@"\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*", Ruleset = "RuleSetA")] public string Email { get { return email; } set { email = value; } } [ObjectValidator("ValidAddress", Ruleset="RuleSetA")] public Address Address { get { return address; } set { address = value; } } [RangeValidator(0, RangeBoundaryType.Inclusive, 1000000, RangeBoundaryType.Inclusive, Ruleset="RuleSetA", MessageTemplate="Rewards points cannot exceed 1,000,000") public int RewardPoints { get { return rewardPoints; } set { rewardPoints = value; } } }
Depois o Customer pode ser validado de uma vez só da seguinte forma:
Exemplo: ( http://msdn.microsoft.com/en-us/library/cc511605.aspx )
Customer cust = new Customer(); ValidationResults results = Validation.Validate(cust, customerRuleSetCombo.Text);
Os objetos também podem implementar um método que faz todas as validações de uma só vez.
Exemplo: ( http://msdn.microsoft.com/en-us/library/cc511640.aspx )
using Microsoft.Practices.EnterpriseLibrary.Common.Configuration; using Microsoft.Practices.EnterpriseLibrary.Validation; using Microsoft.Practices.EnterpriseLibrary.Validation.Validators; [HasSelfValidation] public class TemperatureRange { private int min; private int max; // ... [SelfValidation] public void CheckTemperature(ValidationResults results) { if (max < min) results.AddResult(new ValidationResult("Max less than min", this, "", "", null)); } }
É importante notar que o Validation Application Block pode ser usado em aplicações ASP.NET, Winforms e WCF. ( http://msdn.microsoft.com/en-us/library/cc511714.aspx )
* Integrando Validations no Winforms: http://msdn.microsoft.com/en-us/library/cc511884.aspx
* Integrando Validations em ASP.NET: http://msdn.microsoft.com/en-us/library/cc511745.aspx
* Integranto Validations no WCF: http://msdn.microsoft.com/en-us/library/cc511692.aspx
No comments:
Post a Comment