2、数据验证组件框架:Microsoft.Practices.EnterpriseLibrary.Validation - 开源项目研究文章
Posted on 2025-08-07 09:33 lzhdim 阅读(7763) 评论(0) 收藏 举报 
Microsoft.Practices.EnterpriseLibrary.Validation 是微软企业库的一部分,它提供了一个功能强大的验证应用程序模块,旨在帮助开发者实现结构化且易于维护的验证逻辑。以下是对 Microsoft.Practices.EnterpriseLibrary.Validation 框架的介绍:
框架概述
微软企业库是一系列可重用的应用程序块的集合,专门设计来帮助软件开发人员解决常见的企业级开发挑战。其中,验证块(Validation Application Block)提供了丰富的验证规则和工具,支持通过代码或配置文件来定义验证规则。
特点
- 一致性:有助于保持一致的验证方法。
- 标准验证:包括大多数标准的 .NET 数据类型验证。
- 规则集:允许为类及其成员定义多个规则集。
- 灵活性:可以应用一个或多个规则集进行对象验证
使用模式
企业库验证应用程序模块有两种使用模式:
- 代码模式:直接在代码中定义验证规则。
- 配置文件模式:在配置文件中定义验证规则,适用于更灵活的验证需求。
验证方法
提供了多种验证方法,包括但不限于:
- And CompositeValidator
- ContainsCharacters Validator
- Date Time RangeValidator
- Enum ConversionValidator
- Not Null Validator
- Range Validator
- Regular ExpressionValidator
- String LengthValidator
使用示例
在代码中使用验证块的一个示例如下:
public class MyClass
{
[StringLengthValidator(1, 32, MessageTemplate = "MyValue is too long", Ruleset = "MyRules")]
[MyValidator(MessageTemplate = "MyValue is invalid", Ruleset = "MyRules")]
public string MyValue { get; set; }
public ValidationResults Validate()
{
Validator<MyClass> myValidator = ValidationFactory.CreateValidator<MyClass>("MyRules");
ValidationResults custResults = myValidator.Validate(this);
return custResults;
}
}
验证器创建
可以使用 ValidationFactory 类来创建验证器对象,如 CreateValidator<T> 方法,它根据指定的规则集为类型 T 创建验证器。
NuGet 包
可以通过 NuGet 包管理器安装企业库验证应用程序块,例如使用以下命令:
Install-Package EnterpriseLibrary.Validation
此包支持 .NET Framework 的多个版本,并且与其他企业库组件兼容,如 EnterpriseLibrary.Validation.Integration.WCF 和 EnterpriseLibrary.Validation.Integration.AspNet。
以下是如何使用这个框架的一些基本步骤和介绍:
1. 安装企业库验证组件
首先,您需要通过 NuGet 包管理器安装 Microsoft.Practices.EnterpriseLibrary.Validation。在 Visual Studio 中,可以使用以下命令:
Install-Package EnterpriseLibrary.Validation
2. 添加引用
安装完成后,在您的项目中添加对 Microsoft.Practices.EnterpriseLibrary.Validation 的引用。
using Microsoft.Practices.EnterpriseLibrary.Validation;
using Microsoft.Practices.EnterpriseLibrary.Validation.Validators;
3. 定义验证规则
您可以为模型的属性定义验证规则。这可以通过使用数据注解或自定义属性来完成。
public class Person
{
[NotNullValidator]
[StringLengthValidator(1, 100, MessageTemplate = "Name must be 1 to 100 characters long.")]
public string Name { get; set; }
[RangeValidator(1, 99, MessageTemplate = "Age must be between 1 and 99.")]
public int Age { get; set; }
}
4. 创建验证器
使用 ValidationFactory 来创建一个验证器实例,它可以对特定类型的对象进行验证。
var validator = ValidationFactory.CreateValidator<Person>();
5. 执行验证
使用创建的验证器对对象进行验证,并获取验证结果。
var person = new Person { Name = "John Doe", Age = 30 };
var results = validator.Validate(person);
6. 处理验证结果
检查验证结果,并根据需要处理验证错误。
if (!results.IsValid)
{
foreach (var validationResult in results)
{
Console.WriteLine(validationResult.Message);
}
}
else
{
Console.WriteLine("Validation succeeded.");
}
7. 定义自定义验证器
如果内置验证器不满足需求,您可以创建自定义验证器。
public class MyCustomValidator : Validator<string>
{
public MyCustomValidator()
: base("Custom validation failed", "MyCustomValidator")
{
}
protected override void DoValidate(string objectToValidate, object currentTarget, string key, ValidationResults validationResults)
{
// 自定义验证逻辑
if (/* some condition */)
{
validationResults.AddResult(new ValidationResult("Custom validation message", key, objectToValidate, currentTarget));
}
}
}
8. 注册和使用自定义验证器
在定义了自定义验证器后,您需要注册它,然后像使用内置验证器一样使用它。
ValidatorFactory.SetDefaultFactory(new ValidatorFactory());
ValidatorFactory.RegisterValidator(typeof(string), new MyCustomValidator());
9. 配置验证规则(可选)
除了在代码中定义验证规则外,还可以通过配置文件来配置验证规则,这提供了更大的灵活性和可维护性。
网址:https://learn.microsoft.com/zh-hk/previous-versions/msp-n-p/ee743849(v=pandp.51)
![]() |
Austin Liu 刘恒辉
Project Manager and Software Designer E-Mail:lzhdim@163.com Blog:https://lzhdim.cnblogs.com 欢迎收藏和转载此博客中的博文,但是请注明出处,给笔者一个与大家交流的空间。谢谢大家。 |




浙公网安备 33010602011771号