public static MethodResultCache GetCache(string methodName) { if (MethodCaches.ContainsKey(methodName)) { return(MethodCaches[methodName]); } var cache = new MethodResultCache(methodName); MethodCaches.Add(methodName, cache); return(cache); }
public override void OnInvoke(MethodInterceptionArgs args) { var cache = MethodResultCache.GetCache(args.Method); var arguments = args.Arguments.ToList(); var result = cache.GetCachedResult(arguments); if (result != null) { args.ReturnValue = result; return; } base.OnInvoke(args); cache.CacheCallResult(args.ReturnValue, arguments); }