entlib验证组件
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Practices.EnterpriseLibrary.Validation; using Microsoft.Practices.EnterpriseLibrary.Validation.Validators; //https://msdn.microsoft.com/zh-cn/library/ff953181(v=pandp.50).aspx 企业库总目录 //https://msdn.microsoft.com/zh-cn/library/hh315829(v=pandp.50).aspx 企业库验证组件 /* 验证程序的 Message 属性实际上是一个模板,而不只是一个简单的可显示的文本字符串。 * 在块将单个 ValidationResult 添加到它检测到的每个验证错误的 ValidationResults 实例中时, * 它分析 Message 属性的值,该属性查找将用检测到错误的验证程序的特定属性值来替换的标记。 注入到占位符标记中的值和使用的标记数量取决于验证程序的类型(虽然有三个通用于所有验证程序的标记)。 * 标记 {0} 将被正在验证的对象的值替换(确保在显示或使用该值之前先转义该值,以防止注入式攻击)。 * 标记 {1} 将包含正在验证的成员的名称(如果可用),并等同于验证程序的 Key 属性。标记 {2) 将包含验证程序的 Tag 属性的值。 其余标记取决于相应的验证程序类型。例如,对于“包含字符”验证程序,标记 {3} 和 {4} 将要检查的字符和 ContainsCharacters 值(All 或 Any)。 * 对于范围验证程序(例如“字符串长度”验证程序),标记 {3} 到 {6} 将包含您为验证程序指定的下限和上限的值和绑定类型(Inclusive、Exclusive 或 Ignore)。例如,可以定义如下“字符串长度”验证程序: [StringLengthValidator(5, RangeBoundaryType.Inclusive, 20, RangeBoundaryType.Inclusive, MessageTemplate = "{1} must be between {3} and {5} characters.")] */ namespace DPC.EntLib.Validation { class Program { static void Main(string[] args) { Validator<Person> personValidator = ValidationFactory.CreateValidator<Person>(); Person person = new Person(); person.Name = ""; person.Age = 110; ValidationResults valResults = personValidator.Validate(person); //personValidator.DoValidate(person, if (valResults.Count == 0) { Console.WriteLine("验证通过..."); } else { foreach (var result in valResults) { Console.WriteLine(result.Message); } } Console.ReadLine(); } } [HasSelfValidation] public class Person { [StringLengthValidator(1,6,MessageTemplate="xxxx")] //[StringLength(4,MinimumLength = 1,ErrorMessage="姓名长度要介于1-4个字符")] public string Name { get; set; } [RangeValidator(0, RangeBoundaryType.Inclusive, 100, RangeBoundaryType.Inclusive, MessageTemplate = "字段{1}的值必须介于{3}-{5}之间")] public int Age { get; set; } [NotNullValidator(MessageTemplate ="zzzzzzz")] public int? Weight { get; set; } [SelfValidation()] public void DoValidate(ValidationResults results) { results.AddResult(new ValidationResult("自定义错误消息",this,"self","",null )); } } }