我有一个客户类,其中包含电话号码和电子邮件属性。使用数据注释(DataAnnotations),我可以在这些属性上应用数据类型验证属性,但我无法看到这给我带来了什么好处。
例如:
[DataType(DataType.PhoneNumber)]
public string PhoneNumber {get; set;}
我有一个单元测试,将 "1515999A" 分配给此属性。当我逐步执行验证程序时,该值被认为是电话号码的有效值。我原以为这应该是无效的。
我在谷歌上搜索了一些内容,但找不到一个合理的解释,说明各种枚举数据类型实际上捕获了什么。是否有一个有价值的参考资料?
编辑:
以下是我用于验证程序的核心...
public virtual XLValidationIssues ValidateAttributes<TEntity>(TEntity entity)
{
var validationIssues = new XLValidationIssues();
// Get list of properties from validationModel
var props = entity.GetType().GetProperties();
// Perform validation on each property
foreach (var prop in props)
ValidateProperty(validationIssues, entity, prop);
// Return the list
return validationIssues;
}
protected virtual void ValidateProperty<TEntity>(XLValidationIssues validationIssues, TEntity entity, PropertyInfo property)
{
// Get list of validator attributes
var validators = property.GetCustomAttributes(typeof(ValidationAttribute), true);
foreach (ValidationAttribute validator in validators)
ValidateValidator(validationIssues, entity, property, validator);
}
protected virtual void ValidateValidator<TEntity>(XLValidationIssues validationIssues, TEntity entity, PropertyInfo property, ValidationAttribute validator)
{
var value = property.GetValue(entity, null);
if (!validator.IsValid(value))
validationIssues.Add(new XLValidationIssue(property.Name, value, validator.FormatErrorMessage(property.Name, value)));
}