Пример #1
0
        private bool HasMatch(IComponentInfo info)
        {
            //得到所有切点
            var pointCuts = Aspect.GetPointCuts(info.Implementation);

            if (pointCuts == null || pointCuts.Length == 0)
            {
                return(false);
            }

            //得到所有Advice
            var advices = Aspect.GetAdvices(pointCuts);

            if (advices.Count == 0)
            {
                return(false);
            }

            //得到所有的接入点
            var joinPoints = Aspect.GetJointPoints(info.Implementation, info.Contracts, pointCuts);

            if (joinPoints == null || joinPoints.Count == 0)
            {
                return(false);
            }

            Aspect.RegisterJointPoints(info.Implementation, joinPoints, advices);

            info.ExtendedProperties["interceptors"] = advices.Values.Distinct().ToArray();
            info.ExtendedProperties["methods"]      = joinPoints.Select(p => p.Key).Distinct().ToArray();

            return(true);
        }