Esempio n. 1
0
        public IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
        {
            UserMatch user = input.Inputs[0] as UserMatch;

            if (!user.IsMatch <UserMatch>())
            {
                Console.WriteLine($"显示如下错误信息,发生时间:{DateTime.Now}");
                StringBuilder sb = new StringBuilder();
                foreach (var item in user.MatchesWarnInfo <UserMatch>())
                {
                    var message = $"报错名:{item.Key},数据值:{item.Value}";
                    sb.AppendLine(message);
                    Console.WriteLine(message);
                }
                return(input.CreateExceptionMethodReturn(new Exception(sb.ToString())));
            }
            return(getNext()(input, getNext));
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            Console.WriteLine(People.Chinese.GetRemark());

            People.Otherbody.GetALLRemark().ShowList();

            #region 测试模仿课程方法
            {
                User user1 = new User()
                {
                    Id      = 963,
                    Account = "LaoYang",
                    Email   = "*****@*****.**",
                    Mobile  = "13566626562"
                };
                string errorName;
                Console.WriteLine($"状态{user1.IsValidate(out errorName)},报错属性名:{errorName}");
            }
            #endregion

            List <UserMatch> users = new List <UserMatch>();
            #region 学习Attribute类发现有自带虚方法Match
            {
                UserMatch user1 = new UserMatch()
                {
                    Id      = 963,
                    Account = "yang",
                    Email   = "#[email protected]",
                    Mobile  = "13566625632错误"
                };
                users.Add(user1);
                string errorName;
                Console.WriteLine($"状态{user1.IsMatch(out errorName)},报错属性名:{errorName}");

                foreach (var kvEnity in user1.MatchesWarnInfo())
                {
                    Console.WriteLine($"报错名:{kvEnity.Key},报错值:{kvEnity.Value}");
                }
            }
            #endregion

            #region UnityAop实现Parallel并发调用
            UserMatch user2 = new UserMatch()
            {
                Id      = 963,
                Account = "loayang",
                Email   = "*****@*****.**",
                Mobile  = "13566625632"
            };

            users.Add(user2);
            Console.WriteLine("***********************演示UnityAOP多线程并发***************************");
            try
            {
                Parallel.ForEach(users, user =>
                {
                    UnityAop.UnityAOP.Show(user);
                });
            }
            catch (AggregateException aex)
            {
                Console.WriteLine("################捕获到异常反馈如下:##################");
                foreach (var iex in aex.InnerExceptions)
                {
                    Console.WriteLine(iex.Message);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            #endregion

            Console.ReadKey();
        }