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