public Activity Incorporate(IAspect aspect) { var _advising = aspect.Advise(this.Method); if (_advising == null) { return(this); } var _activity = this; foreach (var _advice in _advising.Reverse()) { if (_advice == null) { continue; } _activity = new Activity(_activity, _advice.Decorate(_activity.Method, _activity.Pointer)); } return(_activity); }