| 
0
 | 
     1 <% title # Cache aspect %>
 | 
| 
 | 
     2 <% group # Cache aspect %>
 | 
| 
 | 
     3 <p class="j">This aspect helps to cache method calls. 
 | 
| 
 | 
     4 The aspect uses input method parameters to create a cache key and 
 | 
| 
 | 
     5 caches return value and all output (both <i>ref</i> and <i>out</i>) parameters. 
 | 
| 
 | 
     6 By default only value types and string type of the method parameters are used 
 | 
| 
 | 
     7 to create a cache key. Any other types are ignored. 
 | 
| 
 | 
     8 This behavior can be changed by assigning the <b>CacheAspect.IsCacheableParameterType</b> property
 | 
| 
 | 
     9 to a delegate providing custom logic.
 | 
| 
 | 
    10 </p>
 | 
| 
 | 
    11 
 | 
| 
 | 
    12 CacheAspect.cs
 | 
| 
 | 
    13 <% ..\..\..\HowTo\Aspects\CacheAspect.cs %>
 | 
| 
 | 
    14 
 | 
| 
 | 
    15 If we decompile the actual emitted TestClass class, we may see something like the following:
 | 
| 
 | 
    16 <% Doc\Aspects\CacheAspect.cs %>
 |