Castle.Facilities.Cache.CacheConfigHolder.GetConfig C# (CSharp) Method

GetConfig() public method

public GetConfig ( Type implementation ) : CacheConfig
implementation System.Type
return CacheConfig
		public CacheConfig GetConfig(Type implementation)
		{
			return _impl2Config[implementation] as CacheConfig;
		}
	}

Usage Example

        /// <summary>
        /// Returns from the cache provider the value saved with the key generated
        /// using the specified <code>IMethodInvocation</code>. If the object is not
        /// found in the cache, the intercepted method is executed and its returned
        /// value is saved in the cached and returned by this method.
        /// </summary>
        /// <param name="invocation">the description of the intercepted method.</param>
        /// <param name="args">the arguments of the intercepted method.</param>
        /// <returns>the object stored in the cache.</returns>
        public object Intercept(IMethodInvocation invocation, params object[] args)
        {
            CacheConfig config = _cacheConfigHolder.GetConfig(invocation.Method.DeclaringType);

            if (config != null && config.IsMethodCache(invocation.Method))
            {
                ICacheManager cacheManager = config.GetCacheManager(invocation.Method);
                String        cacheKey     = cacheManager.CacheKeyGenerator.GenerateKey(invocation, args);
                object        result       = cacheManager[cacheKey];

                if (result == null)
                {
                    //call target/sub-interceptor
                    result = invocation.Proceed(args);

                    //cache method result
                    if (result == null)
                    {
                        cacheManager[cacheKey] = NULL_OBJECT;
                    }
                    else
                    {
                        cacheManager[cacheKey] = result;
                    }
                }
                else if (result == NULL_OBJECT)
                {
                    // convert the marker object back into a null value
                    result = null;
                }

                return(result);
            }
            else
            {
                return(invocation.Proceed(args));
            }
        }
CacheConfigHolder