Ejemplo n.º 1
0
        /// <summary>
        /// 创建缓存
        /// </summary>
        /// <param name="config">缓存配置</param>
        /// <returns></returns>
        public static JYCache <TKey, TValue> Create(CacheConfig config = null)
        {
            if (config == null)
            {
                config = new CacheConfig();
            }
            if (config.WeakKey && typeof(TKey).IsValueType)
            {
                throw new Exception("TKey不能是值类型或者不能启用WeakKey");
            }
            if (config.WeakValue && typeof(TValue).IsValueType)
            {
                throw new Exception("TKey不能是值类型或者不能启用WeakKey");
            }
            JYCache <TKey, TValue> cache = new JYCache <TKey, TValue>(config);

            cache.CacheName = GetName();
            if (config.PersPolicy != PersistencePolicy.None)
            {
                //反射加载
                if (CacheStore == null)
                {
                    string[] files = Directory.GetFiles(AppDomain.CurrentDomain.BaseDirectory);
                    if (files.Length > 0)
                    {
                        foreach (string file in files)
                        {
                            Assembly asm   = Assembly.LoadFrom(file);
                            var      types = asm.GetTypes().Where(t => t.GetInterfaces().Contains(typeof(ICacheStore.ICacheStore))).ToList();
                            if (types.Count > 0)
                            {
                                CacheStore = types[0];
                                break;
                            }
                        }
                    }
                }
                if (CacheStore != null)
                {
                    ICacheStore.ICacheStore store = (ICacheStore.ICacheStore)Activator.CreateInstance(CacheStore);
                    cache.Store = store;
                    if (cache.Store != null)
                    {
                        cache.Store.Name = cache.CacheName;
                        if (!string.IsNullOrEmpty(config.PersDir))
                        {
                            cache.Store.DataDir = config.PersDir;
                        }
                        cache.CheckStore();
                    }
                }
            }
            return(cache);
        }
Ejemplo n.º 2
0
        public static JYCache <TKey, TValue> Create(CacheConfig config = null)
        {
            if (config == null)
            {
                config = new CacheConfig();
            }
            if (config.WeakKey && typeof(TKey).IsValueType)
            {
                throw new Exception("TKey不能是值类型或者不能启用WeakKey");
            }
            if (config.WeakValue && typeof(TValue).IsValueType)
            {
                throw new Exception("TKey不能是值类型或者不能启用WeakKey");
            }
            JYCache <TKey, TValue> cache = new JYCache <TKey, TValue>(config);

            cache.CacheName = GetName();
            return(cache);
        }