반사 검사 대상의 속성이 정규 특에 충족하는지 여부

2650 단어 리플렉스
때때로 대상의 속성은 일부 정규를 만족시켜야 한다. 만약에 단독으로 만드는 방법으로 이러한 정규를 하나하나 검증하는 것은 너무 번거롭다면 우리는 속성에 정규 특성을 추가할 수 있다. 다음과 같다.
   public class student

    {

        [RegularExpression(@"^[a-zA-Z]{1,20}$", ErrorMessage = " , 20!")]

        public string EName { get; set; }

    }


 
그러나 때때로 대상 실례의 생성은 이러한 정규 검사를 빙빙 돌려서, 예를 들어 Excel에서 데이터를 직접 대상으로 흘릴 수 있다.우리는 데이터 흐름이 대상을 생성할 때 발사를 이용하여 생성 대상이 정규 표현에 만족하는지 검사할 수 있다.
 public static void ValidateInstatnce<T>(T t)

        {

            var objectT = Activator.CreateInstance<T>();

            var propertyInfoList = objectT.GetType().GetProperties();



            foreach (var property in propertyInfoList)

            {

                var proValue = property.GetValue(t,null);



                var attars = property.GetCustomAttributes();

                foreach (var attar in attars)

                {

                    try

                    {

                        var validateAttar = attar as ValidationAttribute;

                        if (validateAttar!=null)

                        {

                            //Null , , .

                            validateAttar.Validate(proValue ,property.Name);

                        }

                    }

                    catch (Exception e)

                    {

                        if (e is ValidationException)

                        {

                            throw;

                        }

                    }

                }

            }

        }


테스트 결과:
        public static void test()

        {

            try

            {

                var stu = new student { EName = "123" };

                ValidateInstatnce<student>(stu);

            }

            catch (Exception e)

            {

                

                throw e;

            }



        }

    }

 
버퍼링 예외:
 , 20!

좋은 웹페이지 즐겨찾기