diff --git a/.gitignore b/.gitignore index 0e701226..6d2d4a13 100644 --- a/.gitignore +++ b/.gitignore @@ -161,3 +161,4 @@ $RECYCLE.BIN/ # Mac desktop service store files .DS_Store +**/.idea/ diff --git a/samples/src/Universal/Attributes/BaseMethodPointsAspectAttribute.cs b/samples/src/Universal/Attributes/BaseMethodPointsAspectAttribute.cs index f5bb8a8b..2f0186c5 100644 --- a/samples/src/Universal/Attributes/BaseMethodPointsAspectAttribute.cs +++ b/samples/src/Universal/Attributes/BaseMethodPointsAspectAttribute.cs @@ -12,7 +12,7 @@ protected internal sealed override T WrapSync(Func target, objec try { - var result = base.WrapSync(target, args, eventArgs); + T result = base.WrapSync(target, args, eventArgs); OnAfter(eventArgs); return result; @@ -23,34 +23,49 @@ protected internal sealed override T WrapSync(Func target, objec } } + protected virtual void OnBefore(AspectEventArgs eventArgs) + { + } + + protected virtual void OnAfter(AspectEventArgs eventArgs) + { + } + + protected virtual T OnException(AspectEventArgs eventArgs, Exception exception) + { + throw exception; + } + protected internal sealed override async Task WrapAsync(Func> target, object[] args, AspectEventArgs eventArgs) { - OnBefore(eventArgs); + await OnBeforeAsync(eventArgs); try { - var result = await target(args); - OnAfter(eventArgs); + T result = await base.WrapAsync(target, args, eventArgs); + await OnAfterAsync(eventArgs); return result; } catch (Exception exception) { - return OnException(eventArgs, exception); + return await OnExceptionAsync(eventArgs, exception); } } - protected virtual void OnBefore(AspectEventArgs eventArgs) + protected virtual Task OnBeforeAsync(AspectEventArgs eventArgs) { + return Task.CompletedTask; } - protected virtual void OnAfter(AspectEventArgs eventArgs) + protected virtual Task OnAfterAsync(AspectEventArgs eventArgs) { + return Task.CompletedTask; } - protected virtual T OnException(AspectEventArgs eventArgs, Exception exception) + protected virtual Task OnExceptionAsync(AspectEventArgs eventArgs, Exception exception) { throw exception; } } -} \ No newline at end of file +}