Mercurial > pub > bltoolkit
comparison Tools/DocGen/Content/Doc/Aspects/CacheAspect.cs @ 0:f990fcb411a9
Копия текущей версии из github
author | cin |
---|---|
date | Thu, 27 Mar 2014 21:46:09 +0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:f990fcb411a9 |
---|---|
1 [BLToolkitGenerated] | |
2 public sealed class TestClass : HowTo.Aspects.TestClass | |
3 { | |
4 private static CallMethodInfo _methodInfo; | |
5 private static IInterceptor _interceptor; | |
6 | |
7 public override int CachedMethod(int p1, int p2) | |
8 { | |
9 int returnValue = 0; | |
10 | |
11 if (_methodInfo == null) | |
12 { | |
13 _methodInfo = new CallMethodInfo((MethodInfo)MethodBase.GetCurrentMethod()); | |
14 } | |
15 | |
16 InterceptCallInfo info = new InterceptCallInfo(); | |
17 | |
18 info.Object = this; | |
19 info.CallMethodInfo = _methodInfo; | |
20 info.ParameterValues[0] = p1; | |
21 info.ParameterValues[1] = p2; | |
22 info.ReturnValue = returnValue; | |
23 info.InterceptResult = InterceptResult.Continue; | |
24 info.InterceptType = InterceptType.BeforeCall; | |
25 | |
26 if (_interceptor == null) | |
27 { | |
28 _interceptor = new CacheAspect(); | |
29 _interceptor.Init(_methodInfo, "MaxCacheTime=500;IsWeak=False"); | |
30 } | |
31 | |
32 // 'BeforeCall' step checks if the method is cached. | |
33 // If it is and the cache is not expired, the Intercept method populates | |
34 // return value and output parameters with the cached values and | |
35 // sets info.InterceptResult to InterceptResult.Return. | |
36 // See the [link][file]Aspects/CacheAspect.cs[/file]CacheAspect.BeforeCall[/link] method for details. | |
37 // | |
38 _interceptor.Intercept(info); | |
39 | |
40 returnValue = (int)info.ReturnValue; | |
41 | |
42 if (info.InterceptResult != InterceptResult.Return) | |
43 { | |
44 // If the method call is not cached, target method is called. | |
45 // | |
46 returnValue = base.CachedMethod(p1, p2); | |
47 | |
48 info.ReturnValue = returnValue; | |
49 info.InterceptResult = InterceptResult.Continue; | |
50 info.InterceptType = InterceptType.AfterCall; | |
51 | |
52 // 'AfterCall' step stores parameters and return values in the cache. | |
53 // See the [link][file]Aspects/CacheAspect.cs[/file]CacheAspect.AfterCall[/link] method for details. | |
54 // | |
55 _interceptor.Intercept(info); | |
56 | |
57 returnValue = (int)info.ReturnValue; | |
58 } | |
59 | |
60 return returnValue; | |
61 } | |
62 } |