Mam następujący niestandardowy aspekt i próbowałem zastosować go na poziomie projektu i klasy. We wszystkich przypadkach, nawet celowe dzielenie przez zero, metoda OnException
nigdy nie jest wywoływana. Co ja robię źle?Postsharp OnException Aspect nie działa zgodnie z oczekiwaniami.
[Serializable]
public class AutoLogExceptionsAspect : OnExceptionAspect
{
public override void OnException(MethodExecutionArgs args)
{
AutoLogExceptionEventSource.Log.AutoLogException(args.Exception.GetType().Name, args.Exception.Message, args.Exception.StackTrace);
args.FlowBehavior = FlowBehavior.Continue;
}
public override Type GetExceptionType(MethodBase targetMethod)
{
return typeof(Exception);
}
}
Próbowałem tej dekoracji na klasy:
[AutoLogExceptionsAspect]
public partial class App : Application
i ten jeden temat projektu:
[assembly: AutoLogExceptionsAspect]
Nadpisanie GetExceptionType jest zbędne, ponieważ i tak wychwyci "wyjątek". Pokaż nam, jak udekorowałeś swoją klasę/projekt –
@YuvalItzchakov, zobacz zmodyfikowane pytanie. – ProfK
Wypróbuj '[assembly: YourNamespace.AutoLogExceptionsAspect (AttributeTargetTypes =" YourNamespace. * ")]' –