注册 登录
编程论坛 ASP.NET技术论坛

本人开发的缓存类

belin2000 发布于 2012-10-17 12:25, 1229 次点击
  /// <summary>
    /// 获取数据的委托
    /// </summary>
    /// <param name="forbase"></param>
    /// <returns></returns>
    public delegate object DataDelegate(object forbase);
    /// <summary>
    /// 把数据写入xml的委托
    /// </summary>
    /// <param name="forbase">ID或者MD5码</param>
    /// <param name="ClassName">类,new()或者this</param>
    /// <param name="path">连接(例如 :c:\\4.xml)</param>
    /// <returns></returns>
    public delegate void WriteToXML(string forbase,string path,object ClassName);
20 回复
#2
belin20002012-10-17 12:26
程序代码:
namespace ITA.Base.EntLib.Caching
{


    /// <summary>
   
/// 企业库缓存
   
/// </summary>
    public class Cache : IDisposable, ICache
    {
        private Hashtable inMemoryCache;
        DataDelegate _Motheds;
        /// <summary>
        
/// 必填项目 方法名字,表示如果数据不存在,使用该方法填充数据(Motheds(DataForBase))
        
/// </summary>
        public DataDelegate Motheds
        {
            get { return _Motheds; }
            set { _Motheds = value; }
        }

        /// <summary>
        
/// 获取缓存
        
/// </summary>
        
/// <param name="initialItems"></param>
        public Cache(Hashtable initialItems )
        {
            inMemoryCache = Hashtable.Synchronized(initialItems);
            //IManager = Manager;
        }
        /// <summary>
        
/// 获取有多少个count
        
/// </summary>
        public int Count
        {
            get { return inMemoryCache.Count; }
        }

        public Hashtable CurrentCacheState
        {
            get { return (Hashtable)inMemoryCache.Clone(); }
        }

        public void Remove(object key)
        {
            bool lockWasSuccessful;
            CacheItem cacheItemBeforeLock = null;
            do{
                lock (inMemoryCache.SyncRoot)
                {
                    cacheItemBeforeLock = (CacheItem)inMemoryCache[key];
                    lockWasSuccessful = Monitor.TryEnter(cacheItemBeforeLock);
                }
            } while (lockWasSuccessful == false);

            //IManager.CacheRemove(key);
            inMemoryCache.Remove(key);
           
            Monitor.Exit(cacheItemBeforeLock);

        }

        public void Add(object key, object value, CacheItemPriority scavengingPriority, DateTime dt)
        {
            bool lockWasSuccessful;
            CacheItem cacheItemBeforeLock = null;
            do
            {
                lock (inMemoryCache.SyncRoot)
                {
                    cacheItemBeforeLock = new CacheItem( false, null, CacheItemPriority.Normal, dt);
                    inMemoryCache.Add(key, cacheItemBeforeLock);
                    lockWasSuccessful = Monitor.TryEnter(cacheItemBeforeLock);
                }
            } while (lockWasSuccessful == false);
            // IManager.CacheAdd(key, value, dt, CacheItemPriority.Normal);
            cacheItemBeforeLock.IsCacheOk = true;
            cacheItemBeforeLock.Data = value;
            inMemoryCache[key] = cacheItemBeforeLock;

            Monitor.Exit(cacheItemBeforeLock);

        }
        /// <summary>
        
/// 根据Key获取相关的数据,如果没有数据,则通过values去获取数据
        
/// </summary>
        
/// <param name="key"></param>
        
/// <returns></returns>
        public CacheItem GetItem(object key, object values)
        {
            CacheItem _cacheItem = null;

            if (inMemoryCache.ContainsKey(key))
            {
                _cacheItem = (CacheItem)inMemoryCache[key];
                if (_cacheItem.IsCacheOk)
                {
                    //从缓存中获取数据
                    
//_cacheItem.Data = IManager.CacheItemDate(key);
                    if (_cacheItem.Data == null)
                    {
                        Remove(key);
                        _cacheItem = null;

                    }
                }
                else
                {
                    //三秒钟内获取数据
                    for (int i = 0; i < 150; i++)
                    {
                        Thread.Sleep(20);
                        _cacheItem = (CacheItem)inMemoryCache[key];
                        if (_cacheItem.Data != null)
                        {
                            break;
                        }
                        else
                        {
                            continue;
                        }
                    }
                }
            }
            else
            {
                //如果没有数据
               
//object values = methodes(forbase);
                ClearExdateCache();
                Add(key, values, CacheItemPriority.Low, DateTime.Now.AddSeconds(30));
                _cacheItem = (CacheItem)inMemoryCache[key];
            }
            return _cacheItem;
        }
        /// <summary>
        
/// 清除已经过期的缓存
        
/// </summary>
        public void ClearExdateCache()
        {
            lock (inMemoryCache.SyncRoot)
            {
                //Hashtable ht = inMemoryCache.Clone()
                foreach (object key in CurrentCacheState.Keys)
                {
                    CacheItem item = (CacheItem)inMemoryCache[key];
                    if (item.LastAccessedTime <= DateTime.Now)
                    {
                        inMemoryCache.Remove(key);
                        //IManager.CacheRemove(key.ToString());
                    }
                }
            }
        }
        /// <summary>
        
/// 删除最快过期的一个缓存
        
/// </summary>
        public void RemoveCacheLastDateOut()
        {
            lock (inMemoryCache.SyncRoot)
            {
                CacheItem ditem=null;
                object key_ = null;
                foreach (object key in CurrentCacheState.Keys)
                {
                    CacheItem item = (CacheItem)inMemoryCache[key];
                    if (ditem == null)
                    {
                        ditem = item;
                        key_ = key;
                        continue;
                    }
                    else
                    {
                        if (ditem.LastAccessedTime > item.LastAccessedTime)
                        {
                            key_ = key;
                            ditem = item;
                        }
                    }
                }
                inMemoryCache.Remove(key_);
                //IManager.CacheRemove(ditem.Key);
            }
        }

        /// <summary>
        
/// 删除缓存等级最低,最快过期的一个缓存
        
/// </summary>

        public void RemoveCacheByCacheItemPriority()
        {
            lock (inMemoryCache.SyncRoot)
            {
                CacheItem ditem = null;
                object key_ = null;
                foreach (object key in CurrentCacheState.Keys)
                {
                    CacheItem item = (CacheItem)inMemoryCache[key];
                    if (ditem == null)
                    {
                        ditem = item;
                        key_ = key;
                        continue;
                    }
                    else
                    {
                        if (ditem.ScavengingPriority > item.ScavengingPriority)
                        {
                            ditem = item;
                            key_ = key;
                        }
                        else
                        {
                            if (ditem.ScavengingPriority == item.ScavengingPriority && ditem.LastAccessedTime > item.LastAccessedTime)
                            {
                                ditem = item;
                                key_ = key;
                            }
                        }
                    }
                }
                inMemoryCache.Remove(key_);
            }
        }


        ~Cache()
        {
            Dispose(false);
        }
        public void Dispose()
        {
            Dispose(true);
            GC.SuppressFinalize(this);
        }
        protected virtual void Dispose(bool disposing)
        {
            if (disposing)
            {
                inMemoryCache = null;
                //backingStore.Dispose();
               
//backingStore = null;
            }
        }


        public object DataDoing( DataDelegate Mothed,object forbase)
        {
             return Mothed(forbase);
        }



    }
}
#3
belin20002012-10-17 12:27
程序代码:
namespace ITA.Base.EntLib.Caching
{
    public class CacheItem
    {
        private object _Data;
        /// <summary>
        
/// 用于保存的数据
        
/// </summary>
        public object Data
        {
            get { return _Data; }
            set { _Data = value; }
        }
        private CacheItemPriority _scavengingPriority;
        /// <summary>
        
/// 缓存的权限(高,低等等)
        
/// </summary>
        public CacheItemPriority ScavengingPriority
        {
            get { return _scavengingPriority; }
            set { _scavengingPriority = value; }
        }
        private DateTime _lastAccessedTime;
        /// <summary>
        
/// 过期时间
        
/// </summary>
        public DateTime LastAccessedTime
        {
            get { return _lastAccessedTime; }
            set { _lastAccessedTime = value; }
        }
        bool _isCacheOk;
        /// <summary>
        
/// 缓存是准备好
        
/// </summary>
        public bool IsCacheOk
        {
            get { return _isCacheOk; }
            set { _isCacheOk = value; }
        }

        public CacheItem(bool _IsCacheOk, object _Data, CacheItemPriority _ScavengingPriority, DateTime _LastAccessedTime)
        {
            this._isCacheOk = _IsCacheOk;
            this._Data = _Data;
            this._lastAccessedTime = _LastAccessedTime;
            this._scavengingPriority = _ScavengingPriority;
        }

    }
}
#4
belin20002012-10-17 12:27
程序代码:
namespace ITA.Base.EntLib.Caching
{
    /// <summary>
   
/// 缓存的类型
   
/// </summary>
    public enum CacheItemPriority
    {
        /// <summary>
        
/// Should never be seen in nature.
        
/// </summary>
        None = 0,
        /// <summary>
        
/// Low priority for scavenging.
        
/// </summary>
        Low = 1,
        /// <summary>
        
/// Normal priority for scavenging.
        
/// </summary>
        Normal,
        /// <summary>
        
/// High priority for scavenging.
        
/// </summary>
        High,
        /// <summary>
        
/// Non-removable priority for scavenging.
        
/// </summary>
        NotRemovable
    }
}
#5
belin20002012-10-17 12:27
程序代码:
namespace ITA.Base.EntLib.Caching
{
    /// <summary>
   
/// 缓存移除的方式
   
/// </summary>
    public enum CacheItemRemovedReason
    {
        /// <summary>
        
/// 已经过期
        
/// </summary>
        Expired,

        /// <summary>
        
/// 移除
        
/// </summary>
        Removed,

        /// <summary>
        
/// 因为缓存数量已满,则根据缓存等级移除较低级的缓存
        
/// </summary>
        Scavenged,

        /// <summary>
        
/// 未知的
        
/// </summary>
        Unknown = 9999
    }
}
#6
belin20002012-10-17 12:28
程序代码:
namespace ITA.Base.EntLib.Caching
{
    /// <summary>
   
/// 数据缓存的接口
   
/// </summary>
    public interface ICache
    {
        Hashtable CurrentCacheState { get; }
        /// <summary>
        
/// 获取有多少条数据
        
/// </summary>
        int Count { get; }
        /// <summary>
        
/// 删除指定值的缓存
        
/// </summary>
        
/// <param name="key"></param>
        void Remove(object key);
        /// <summary>
        
/// 添加一条缓存
        
/// </summary>
        
/// <param name="key"></param>
        
/// <param name="value"></param>
        
/// <param name="scavengingPriority">缓存等级</param>
        
/// <param name="dt">过期时间</param>
        void Add(object key, object value, CacheItemPriority scavengingPriority, DateTime dt);
        /// <summary>
        
/// 获取指定键的缓存,如果值不存在,则用values填充(默认缓存30秒)
        
/// </summary>
        
/// <param name="key"></param>
        
/// <returns></returns>
        CacheItem GetItem(object key, object values);
        /// <summary>
        
/// 删除已经过期的缓存
        
/// </summary>
        void ClearExdateCache();
        /// <summary>
        
/// 删除等级最低,最快过期的一条缓存
        
/// </summary>
        void RemoveCacheByCacheItemPriority();
        object DataDoing(DataDelegate Mothed, object forbase);
    }
}
#7
belin20002012-10-17 12:28
程序代码:
namespace ITA.Base.EntLib.Caching
{
    /// <summary>
   
/// 缓存管理
   
/// </summary>
    public interface ICacheManager
    {
        /// <summary>
        
/// 更新缓存
        
/// </summary>
        
/// <param name="key">键值</param>
        
/// <param name="data"></param>
        
/// <param name="_datetime">过期时间</param>
        
/// <param name="scavengingPriority"></param>
        void CacheAdd(string key, object data, DateTime _datetime, CacheItemPriority scavengingPriority);
        void CacheRemove(string key);
        object CacheItemDate(string key);
    }
}
#8
belin20002012-10-17 12:29
程序代码:
namespace ITA.Base.EntLib.DataHelper
{
    public class DataForBase
    {
       // IList<LinkDataType> _Para;
        CommandType _CommandType;
        /// <summary>
        
/// 指定如何解析字符串
        
/// </summary>
        public CommandType CommandType
        {
            get { return _CommandType; }
            set { _CommandType = value; }
        }
        string _SQLStoredName;
        /// <summary>
        
/// 存储过程、表或者语句的名称
        
/// </summary>
        public string SQLStoredName
        {
            get { return _SQLStoredName; }
            set { _SQLStoredName = value; }
        }

        private IList<LinkDataType> _LinkDataTypeList;

        /// <summary>
        
/// 对应存贮过程的数据类型集合
        
/// </summary>
        public IList<LinkDataType> LinkDataTypeList
        {
            get { return _LinkDataTypeList; }
            set { _LinkDataTypeList = value; }
        }
    }
}
#9
belin20002012-10-17 12:29
程序代码:
namespace ITA.Base.EntLib.DataHelper
{
    /// <summary>
   
/// 数据库处理方式
   
/// </summary>
    public class DataHelper<T> : CacheDataHelper, IDataHelper, ITInterface<T> where T:new()
    {
        static int _count = string.IsNullOrEmpty(ConfigurationManager.AppSettings["CacheCount"]) ? 50 : int.Parse(ConfigurationManager.AppSettings["CacheCount"]);
        /// <summary>
        
///
        
/// </summary>
        
/// <typeparam name="T"></typeparam>
        
/// <param name="NamespaceClassnameAndPara"></param>
        
/// <param name="ht"></param>
        
/// <param name="forbase"></param>
        
/// <returns>IList类型</returns>
        public object GetItem(IHelperPara NamespaceClassnameAndPara, Hashtable ht, object forbase)
        {
            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            cache.ClearExdateCache();
            CacheItem item = cache.GetItem(NamespaceClassnameAndPara, cache.DataDoing(new DataDelegate(GetDataByDataBase<T>), forbase));
            return item.Data;
        }

        IList<TClass> GetDataByDataBase<TClass>(object forbase) where TClass : new()
        {

            DataForBase dfb = (DataForBase)forbase;
            List<TClass> li = new List<TClass>();
            using (IData data = DataCom.GetdateType())
            {
                IDataReader dr = data.ExecuteIReader(, dfb.SQLStoredName, data.SetDbParameter(dfb.LinkDataTypeList));
                while (dr.Read())
                {
                    var ClassName = new TClass();
                    DataHelp.ReaderToObject(dr, ClassName);
                    li.Add(ClassName);
                }

                dr.Close();
                dr.Dispose();
            }
            return li;
        }

        #region IDataHelper 成员


        public object GetItem(IHelperPara NamespaceClassnameAndPara, Hashtable ht)
        {
            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            cache.ClearExdateCache();
            CacheItem item = cache.GetItem(NamespaceClassnameAndPara, cache.DataDoing(new DataDelegate(GetDataByDataBase<T>), NamespaceClassnameAndPara.Para));
            return item.Data;

        }

        #endregion
    }
}
#10
belin20002012-10-17 12:30
程序代码:
namespace ITA.Base.EntLib.DataHelper
{
    /// <summary>
   
/// 用于数据缓存的类,代表key
   
/// </summary>
    public class DataHelperPara : HelperPara,IHelperPara
    {
        DataForBase _Para;
        /// <summary>
        
/// 数据对象
        
/// </summary>
        public object Para
        {
            get { return _Para; }
            set { _Para = (DataForBase)value; }
        }
    }
}
#11
belin20002012-10-17 12:30
程序代码:
namespace ITA.Base.EntLib.FileHelper
{
    public class FileForBase
    {
        string _trueFilePath;
        /// <summary>
        
/// 当前文件的绝对路径(c:\\abc.txt)
        
/// </summary>
        public string TrueFilePath
        {
            get { return _trueFilePath; }
            set { _trueFilePath = value; }
        }
        Encoding _encode;
        /// <summary>
        
/// 读取或者写入时候的编码
        
/// </summary>
        public Encoding Encode
        {
            get { return _encode; }
            set { _encode = value; }
        }
    }
}
#12
belin20002012-10-17 12:30
namespace ITA.Base.EntLib.FileHelper
{
    public class FileHelper : CacheDataHelper,IDataHelper
    {


        #region IDataHelper 成员

        public object GetItem(IHelperPara NamespaceClassnameAndPara, System.Collections.Hashtable ht, object forbase)
        {

            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            cache.ClearExdateCache();
            CacheItem item = cache.GetItem(NamespaceClassnameAndPara, cache.DataDoing(new DataDelegate(GetDataByDataBase), forbase));
            return item.Data;

            //throw new NotImplementedException();
        }

        #endregion
        object GetDataByDataBase(object forbase)
        {
            FileForBase fb = (FileForBase)forbase;
            string t = ITA_File.ReadFile(fb.TrueFilePath, PathType.AbsolutePath, fb.Encode);
            return t;
        }



        #region IDataHelper 成员


        public object GetItem(IHelperPara NamespaceClassnameAndPara, System.Collections.Hashtable ht)
        {
            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            cache.ClearExdateCache();
            CacheItem item = cache.GetItem(NamespaceClassnameAndPara, cache.DataDoing(new DataDelegate(GetDataByDataBase), NamespaceClassnameAndPara.Para));
            return item.Data;
        }

        #endregion
    }
}
#13
belin20002012-10-17 12:31
程序代码:
namespace ITA.Base.EntLib.FileHelper
{
    /// <summary>
   
/// 用于数据缓存的类,代表key
   
/// </summary>
    public class FileHelperPara :HelperPara, IHelperPara
    {
        FileForBase _Para;
        /// <summary>
        
/// 数据路径(FileForBase类型)
        
/// </summary>
        public object Para
        {
            get { return _Para; }
            set { _Para = (FileForBase)value; }
        }



    }
}
#14
belin20002012-10-17 12:31
namespace ITA.Base.EntLib.FileHelper
{
    public class XMLForBase
    {
        string _trueFilePath;
        /// <summary>
        /// 当前文件的绝对路径(c:\\abc.txt),是委托的参数之一
        /// </summary>
        public string TrueFilePath
        {
            get { return _trueFilePath; }
            set { _trueFilePath = value; }
        }
        object _ClassName;
        /// <summary>
        /// 读取或者写入时候的类(new 后的类)
        /// </summary>
        public object ClassName
        {
            get { return _ClassName; }
            set { _ClassName = value; }
        }
        WriteToXML _WriteToXML;
        /// <summary>
        /// 委托的事件 使用new WriteToXML(方法)
        /// </summary>
        public WriteToXML WriteToXML
        {
            get { return _WriteToXML; }
            set { _WriteToXML = value; }
        }
        string _idormd5;
        /// <summary>
        /// ID或者md5码,是委托的参数之一
        /// </summary>
        public string IdOrMd5
        {
            get { return _idormd5; }
            set { _idormd5 = value; }
        }
    }
}
#15
belin20002012-10-17 12:31
程序代码:
namespace ITA.Base.EntLib.FileHelper
{
    public class XMLHelper : CacheDataHelper,IDataHelper
    {


        #region IDataHelper 成员

        public object GetItem(IHelperPara NamespaceClassnameAndPara, System.Collections.Hashtable ht, object forbase)
        {

            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            cache.ClearExdateCache();
            CacheItem item = cache.GetItem(NamespaceClassnameAndPara, cache.DataDoing(new DataDelegate(GetDataByDataBase), forbase));
            return item.Data;

            //throw new NotImplementedException();
        }

        #endregion
        object GetDataByDataBase(object forbase)
        {
            XMLForBase fb = (XMLForBase)forbase;
            if (ITA_File.FindFile(fb.TrueFilePath, PathType.AbsolutePath))
            {
                ITA.Base.DataHelp.XMLToObject(fb.TrueFilePath, fb.ClassName);
            }
            else
            {
                WXml(fb.WriteToXML, fb.IdOrMd5, fb.TrueFilePath,fb.ClassName);
                ITA.Base.DataHelp.XMLToObject(fb.TrueFilePath, fb.ClassName);
            }

            return fb.ClassName;
        }
        void WXml(WriteToXML wtxml, string idormd5, string path,object classname)
        {
            wtxml(idormd5, path,classname);
        }



        #region IDataHelper 成员


        public object GetItem(IHelperPara NamespaceClassnameAndPara, System.Collections.Hashtable ht)
        {
            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            cache.ClearExdateCache();
            CacheItem item = cache.GetItem(NamespaceClassnameAndPara, cache.DataDoing(new DataDelegate(GetDataByDataBase), NamespaceClassnameAndPara.Para));
            return item.Data;
        }

        #endregion
    }
}
#16
belin20002012-10-17 12:32
程序代码:
namespace ITA.Base.EntLib.FileHelper
{
    /// <summary>
   
/// 用于数据缓存的类,代表key
   
/// </summary>
    public class XMLHelperPara :HelperPara, IHelperPara
    {
        XMLForBase _Para;
        /// <summary>
        
/// 数据路径(FileForBase类型)
        
/// </summary>
        public object Para
        {
            get { return _Para; }
            set { _Para = (XMLForBase)value; }
        }



    }
}
#17
belin20002012-10-17 12:32
程序代码:
namespace ITA.Base.EntLib
{
    public class CacheDataHelper
    {
        static int _count = string.IsNullOrEmpty(ConfigurationManager.AppSettings["CacheCount"]) ? 50 : int.Parse(ConfigurationManager.AppSettings["CacheCount"]);

        protected object GetItem<T>(IHelperPara NamespaceClassnameAndPara, Hashtable ht, object forbase ,DataDelegate methodes) where T : new()
        {
            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            CacheItem item = cache.GetItem(NamespaceClassnameAndPara, cache.DataDoing(methodes, forbase));
            return item.Data;
            ///cache.Dispose();
        }
        /// <summary>
        
/// 添加一个缓存
        
/// </summary>
        
/// <param name="ht"></param>
        
/// <param name="NamespaceClassnameAndPara"></param>
        
/// <param name="value"></param>
        
/// <param name="priority"></param>
        
/// <param name="dt"></param>
        public void ADDCache(Hashtable ht, IHelperPara NamespaceClassnameAndPara, object value, CacheItemPriority priority, DateTime dt)
        {
            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            cache.ClearExdateCache();
            if (cache.Count >= _count)
            {
                cache.RemoveCacheByCacheItemPriority();
            }
            cache.Add(NamespaceClassnameAndPara, value, priority, dt);
        }
        /// <summary>
        
/// 删除一个缓存
        
/// </summary>
        
/// <param name="ht"></param>
        
/// <param name="key"></param>
        public void Remove(Hashtable ht, object key)
        {
            ICache cache = new ITA.Base.EntLib.Caching.Cache(ht);
            cache.Remove(key);
        }


    }
}
#18
belin20002012-10-17 12:33
程序代码:
namespace ITA.Base.EntLib
{
    public class HelperPara
    {
        string _nameSpace;
        /// <summary>
        
/// 空间命名
        
/// </summary>
        public string NameSpace
        {
            get { return _nameSpace; }
            set { _nameSpace = value; }
        }
        string _className;
        /// <summary>
        
/// 类名
        
/// </summary>
        public string ClassName
        {
            get { return _className; }
            set { _className = value; }
        }
        string _Mothed;
        /// <summary>
        
/// 方法名
        
/// </summary>
        public string Mothed
        {
            get { return _Mothed; }
            set { _Mothed = value; }
        }

    }
}
#19
belin20002012-10-17 12:33
程序代码:
namespace ITA.Base.EntLib
{
    /// <summary>
   
/// 数据缓存操作接口(new DataHelper&lt;T&gt;(),T为类型/ new FileHelper()/new XMLHelper())
   
/// </summary>
    public interface IDataHelper
    {
        //IHelperPara NamespaceClassnameAndPara { set; get; }
        
//Hashtable HT { set; get; }
        
//object ForBase { get; set; }

        /// <summary>
        
/// 根据条件从缓存库中获取数据(数据库是返回IList&lt;T&gt; / 文件是返回string/xml返回类)[否决的]
        
/// </summary>
        
/// <typeparam name="T">返回的类</typeparam>
        
/// <param name="NamespaceClassnameAndPara">保存在缓存库中的key</param>
        
/// <param name="ht">缓存库</param>
        
/// <param name="forbase">如果库中不存在,使用这些条件获取数据(类型:FileForBase/DataForBase/XMLForBase)</param>
        
/// <returns></returns>
       // object GetItem(IHelperPara NamespaceClassnameAndPara, Hashtable ht, object forbase);
        /// <summary>
        
/// 根据条件从缓存库中获取数据(数据库是返回IList&lt;T&gt; / 文件是返回string/xml返回类)
        
/// </summary>
        
/// <typeparam name="T">返回的类</typeparam>
        
/// <param name="NamespaceClassnameAndPara">保存在缓存库中的key</param>
        
/// <param name="ht">缓存库</param>
        
/// <returns></returns>
        object GetItem(IHelperPara NamespaceClassnameAndPara, Hashtable ht);
        /// <summary>
        
/// 添加一条缓存到缓存库
        
/// </summary>
        
/// <param name="ht">缓存库</param>
        
/// <param name="NamespaceClassnameAndPara">保存在缓存库中的key</param>
        
/// <param name="value"></param>
        
/// <param name="priority">缓存的类型和等级</param>
        
/// <param name="dt">过去时间</param>
        void ADDCache(Hashtable ht, IHelperPara NamespaceClassnameAndPara, object value, CacheItemPriority priority, DateTime dt);
        /// <summary>
        
/// 删除一条缓存
        
/// </summary>
        
/// <param name="ht">缓存库</param>
        
/// <param name="key">保存在缓存库中的key</param>
        void Remove(Hashtable ht, object key);
    }
}
#20
belin20002012-10-17 12:33
程序代码:
namespace ITA.Base.EntLib
{
    public interface IHelperPara
    {
        /// <summary>
        
/// 空间命名
        
/// </summary>
        string NameSpace
        {
            get;
            set;
        }
        /// <summary>
        
/// 当前类名
        
/// </summary>
        string ClassName
        {
            get;
            set;
        }
        /// <summary>
        
/// 方法名
        
/// </summary>
        string Mothed
        {
            get;
            set;
        }
        /// <summary>
        
/// FileForBase/DataForBase/XMLForBase 类
        
/// </summary>
        object Para
        {
            get;
            set;
        }
    }
}
#21
belin20002012-10-17 12:34
程序代码:
namespace ITA.Base.EntLib
{
    public interface ITInterface<T> where T:new()
    {
    }
}
1