public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
        {
            if (IsMethodCachable(input))
            {
                string regionName = _cacheRegionNameGenerator.CreateRegionName(
                    string.Format("{0}.{1}", input.Target.GetType().FullName, input.MethodBase.Name));

                string cacheKey = _cacheKeyGenerator.CreateCacheKey(input.Inputs);

                ICacheRegion cacheRegion = _cacheProvider.GetRegion(regionName);

                return(cacheRegion.GetOrAdd(cacheKey,
                                            () => getNext.Invoke().Invoke(input, getNext)
                                            ));
            }

            return(getNext()
                   .Invoke(input, getNext));
        }
示例#2
0
 public IMethodReturn Invoke(IMethodInvocation input, GetNextInterceptionBehaviorDelegate getNext)
 {
     Console.WriteLine($"{DateTime.Now}执行了{input.MethodBase.Name}方法");
     return(getNext.Invoke().Invoke(input, getNext));
 }