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 ));

        }

       

    }

}

  

你可能感兴趣的:(lib)