public override void OnEnter(AspectMethodInfo methodInfo) { var attributes = methodInfo.Attributes; methodInfo.Tag = "This is a test"; Console.WriteLine("Entered {0}", methodInfo.Method.Name); }
public static Task HandleTaskError(BaseAspect aspect, AspectMethodInfo methodInfo, Task task) { task.ContinueWith((t, state) => { HandleTaskError(methodInfo, t, state); }, new Tuple <BaseAspect, AspectMethodInfo>(aspect, methodInfo), TaskContinuationOptions.OnlyOnFaulted); return(task); }
public static T GetReturn <T>(AspectMethodInfo methodInfo) { var returns = methodInfo.Returns; if (returns != null) { return((T)returns); } return(GetDefault <T>()); }
public static Task HandleTaskExit(BaseAspect aspect, AspectMethodInfo methodInfo, Task task) { task.ContinueWith((t, state) => { var tuple = state as Tuple <BaseAspect, AspectMethodInfo>; var aspectInfo = tuple.Item1; var info = tuple.Item2; info.Returns = t; aspectInfo.OnExit(info); }, new Tuple <BaseAspect, AspectMethodInfo>(aspect, methodInfo), TaskContinuationOptions.None); return(task); }
/// <summary> /// Handle Exception for given task /// </summary> /// <param name="methodInfo">Aspect Method Info</param> /// <param name="task">Task</param> /// <param name="state">State Object</param> private static void HandleTaskError(AspectMethodInfo methodInfo, Task task, object state) { var tuple = state as Tuple <BaseAspect, AspectMethodInfo>; var aspectInfo = tuple.Item1; var info = tuple.Item2; info.Returns = task; aspectInfo.OnError(info); if (!methodInfo.ReThrow) { task.Exception.Handle(ex => true); } }
public override void OnError(AspectMethodInfo methodInfo) { base.OnError(methodInfo); }
public override void OnExit(AspectMethodInfo methodInfo) { Console.WriteLine("Got: {0}", methodInfo.Tag); Console.WriteLine("Exit {0}", methodInfo.Method.Name); }