using System; using PostSharp.Aspects; using PostSharp.Aspects.Configuration; using PostSharp.Aspects.Serialization; using Resonance.Messenging.Diagnostics; [assembly: StackOverflowDetection] namespace Resonance.Messenging.Diagnostics { [OnMethodBoundaryAspectConfiguration(SerializerType = typeof(MsilAspectSerializer))] public class StackOverflowDetectionAttribute : OnMethodBoundaryAspect { [ThreadStatic] private static int level; public override void OnEntry(MethodExecutionArgs args) { level++; if ( level > 100 ) throw new StackOverflowException(); } public override void OnExit(MethodExecutionArgs args) { level--; } } }