ポストシャープの使用を検討しており、いくつかのデモをまとめようとしています。そのうちの 1 つは例外をログに記録するアスペクトであり、もう 1 つは null 引数をチェックして、例外が発生したときに例外をスローするものでした。
私が抱えている問題は、例外ログの側面で、null チェックの側面によってスローされた例外をログに記録することです。機能していないようです。これを機能させる方法を知っている人はいますか?
編集:明確にするために、例外ロガーはアスペクト外でスローされた例外を処理していますが、NullCheckAttribute でスローされた例外をログに記録していません
null チェックの側面のコードは次のとおりです。
[Serializable]
public class NullCheckAttribute : OnMethodBoundaryAspect
{
[ExceptionLogger]
public override void OnEntry(MethodExecutionArgs args)
{
foreach (var argument in args.Arguments)
{
if (argument == null)
throw new InvalidOperationException("Null argument in " + args.Method.Name);
}
}
}
そして、例外ロガーのコード
[Serializable]
public class ExceptionLoggerAttribute : OnMethodBoundaryAspect
{
public override void OnException(MethodExecutionArgs args)
{
Console.WriteLine("Exception thrown in " + args.Method.Name);
Console.WriteLine("***Message: " + args.Exception.Message);
Console.WriteLine("***Stack trace: " + args.Exception.StackTrace);
}
}
また、これには無料のライセンスを使用しているだけであることにも言及する必要があります。