Beispiel #1
0
        public override void OnEnter(AspectMethodInfo methodInfo)
        {
            var attributes = methodInfo.Attributes;

            methodInfo.Tag = "This is a test";
            Console.WriteLine("Entered {0}", methodInfo.Method.Name);
        }
Beispiel #2
0
    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);
    }
Beispiel #3
0
    public static T GetReturn <T>(AspectMethodInfo methodInfo)
    {
        var returns = methodInfo.Returns;

        if (returns != null)
        {
            return((T)returns);
        }

        return(GetDefault <T>());
    }
Beispiel #4
0
    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);
    }
Beispiel #5
0
    /// <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);
        }
    }
Beispiel #6
0
 public override void OnError(AspectMethodInfo methodInfo)
 {
     base.OnError(methodInfo);
 }
Beispiel #7
0
 public override void OnExit(AspectMethodInfo methodInfo)
 {
     Console.WriteLine("Got: {0}", methodInfo.Tag);
     Console.WriteLine("Exit {0}", methodInfo.Method.Name);
 }