/// <inheritdoc/> public IPropertyWeavingPlan MakePlan(IProperty property) { readOnly.Assert(true); var getterPlan = WeaverFactory.InitializeWeavingPlan(); var setterPlan = WeaverFactory.InitializeWeavingPlan(); foreach (var aspectEntry in aspects) { var aspect = aspectEntry.Value; var propertyConcern = aspect.CanApplyTo(property); if (propertyConcern.IsConcerned()) { foreach (var joinPoint in aspect.PointCut) { var advice = aspect.GetAdvice(joinPoint); var aspectName = aspectEntry.Key; var info = joinPoints[joinPoint][aspectName]; if (propertyConcern.IsGetterConcerned()) { getterPlan.AddJoinPoint(joinPoint, aspectName, advice, info.Sequence, info.ParameterFlag, aspect.IsSwitchedOn); } if (propertyConcern.IsSetterConcerned()) { setterPlan.AddJoinPoint(joinPoint, aspectName, advice, info.Sequence, info.ParameterFlag, aspect.IsSwitchedOn); } } } } return(WeaverFactory.InitializePropertyWeavingPlan(getterPlan.Build(), setterPlan.Build())); }
/// <inheritdoc/> public IWeavingPlan MakePlan(IMethod method) { readOnly.Assert(true); var plan = WeaverFactory.InitializeWeavingPlan(); foreach (var aspectEntry in aspects) { var aspect = aspectEntry.Value; if (aspect.CanApplyTo(method)) { foreach (var joinPoint in aspect.PointCut) { var advice = aspect.GetAdvice(joinPoint); var id = aspectEntry.Key; var info = joinPoints[joinPoint][id]; plan.AddJoinPoint(joinPoint, id, advice, info.Sequence, info.ParameterFlag, aspect.IsSwitchedOn); } } } return(plan.Build()); }