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