annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
1 [BLToolkitGenerated]
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
2 public sealed class TestClass : CounterAspectTest.TestClass
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
3 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
4 private static CallMethodInfo _methodInfo;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
5 private static IInterceptor _interceptor;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
6
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
7 public override void TestMethod()
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
8 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
9 if (_methodInfo == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
10 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
11 _methodInfo = new CallMethodInfo((MethodInfo)MethodBase.GetCurrentMethod());
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
12 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
13
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
14 InterceptCallInfo info = new InterceptCallInfo();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
15
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
16 try
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
17 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
18 info.Object = this;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
19 info.CallMethodInfo = _methodInfo;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
20 info.InterceptResult = InterceptResult.Continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
21 info.InterceptType = InterceptType.BeforeCall;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
22
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
23 if (_interceptor == null)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
24 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
25 _interceptor = new CounterAspect();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
26 _interceptor.Init(_methodInfo, null);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
27 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
28
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
29 // 'BeforeCall' creates or gets a counter for the method and
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
30 // registers the current call.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
31 // See the [link][file]Aspects/CounterAspect.cs[/file]CounterAspect.BeforeCall[/link] method for details.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
32 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
33 _interceptor.Intercept(info);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
34
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
35 if (info.InterceptResult != InterceptResult.Return)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
36 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
37 // Target method call.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
38 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
39 base.TestMethod();
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
40 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
41 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
42 catch (Exception exception)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
43 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
44 info.Exception = exception;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
45 info.InterceptResult = InterceptResult.Continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
46 info.InterceptType = InterceptType.OnCatch;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
47
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
48 // 'OnCatch' is required to count calls with exceptions.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
49 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
50 _interceptor.Intercept(info);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
51
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
52 if (info.InterceptResult != InterceptResult.Return)
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
53 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
54 throw;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
55 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
56 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
57 finally
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
58 {
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
59 info.InterceptResult = InterceptResult.Continue;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
60 info.InterceptType = InterceptType.OnFinally;
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
61
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
62 // 'OnFinally' step adds statistic to the method counter.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
63 // See the [link][file]Aspects/CounterAspect.cs[/file]CounterAspect.OnFinally[/link] method for details.
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
64 //
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
65 _interceptor.Intercept(info);
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
66 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
67 }
f990fcb411a9 Копия текущей версии из github
cin
parents:
diff changeset
68 }