コード例 #1
0
ファイル: ProxyUtil.cs プロジェクト: zbxpcq/Afx.Lib
        /// <summary>
        /// OnExecuting
        /// </summary>
        /// <param name="proxy"></param>
        /// <param name="method"></param>
        /// <param name="args"></param>
        /// <param name="context"></param>
        public static void OnExecuting(IProxy proxy, MethodInfo method, object[] args, AopContext context)
        {
            context.Proxy      = proxy;
            context.TargetType = proxy.GetTargetType();
            context.Method     = method;
            context.Arguments  = args;
            var aopfuncs = proxy.GetAopFunc();

            context.Aops = new List <IAop>(aopfuncs.Length);
            for (int i = 0; i < aopfuncs.Length; i++)
            {
                try
                {
                    var aop = aopfuncs[i]();
                    if (aop != null)
                    {
                        context.Aops.Add(aop);
                    }
                } catch { }
            }
            context.Aops.TrimExcess();
            foreach (var aop in context.Aops)
            {
                if (aop != null)
                {
                    aop.OnExecuting(context);
                }
            }
        }