Mercurial > pub > bltoolkit
view Tools/DocGen/Content/Doc/Aspects/CounterAspect.cs @ 3:1ef98bd70424
!bug 100 +3h
Исправление проблемы BLToolkit + mono 3.4
author | cin |
---|---|
date | Fri, 22 Aug 2014 17:34:46 +0400 |
parents | f990fcb411a9 |
children |
line wrap: on
line source
[BLToolkitGenerated] public sealed class TestClass : CounterAspectTest.TestClass { private static CallMethodInfo _methodInfo; private static IInterceptor _interceptor; public override void TestMethod() { if (_methodInfo == null) { _methodInfo = new CallMethodInfo((MethodInfo)MethodBase.GetCurrentMethod()); } InterceptCallInfo info = new InterceptCallInfo(); try { info.Object = this; info.CallMethodInfo = _methodInfo; info.InterceptResult = InterceptResult.Continue; info.InterceptType = InterceptType.BeforeCall; if (_interceptor == null) { _interceptor = new CounterAspect(); _interceptor.Init(_methodInfo, null); } // 'BeforeCall' creates or gets a counter for the method and // registers the current call. // See the [link][file]Aspects/CounterAspect.cs[/file]CounterAspect.BeforeCall[/link] method for details. // _interceptor.Intercept(info); if (info.InterceptResult != InterceptResult.Return) { // Target method call. // base.TestMethod(); } } catch (Exception exception) { info.Exception = exception; info.InterceptResult = InterceptResult.Continue; info.InterceptType = InterceptType.OnCatch; // 'OnCatch' is required to count calls with exceptions. // _interceptor.Intercept(info); if (info.InterceptResult != InterceptResult.Return) { throw; } } finally { info.InterceptResult = InterceptResult.Continue; info.InterceptType = InterceptType.OnFinally; // 'OnFinally' step adds statistic to the method counter. // See the [link][file]Aspects/CounterAspect.cs[/file]CounterAspect.OnFinally[/link] method for details. // _interceptor.Intercept(info); } } }