如何创建缓存对象类?我是c#泛型的新手,我正在尝试创建一个商店,我的程序的其他部分可以从中请求模型对象。我的想法是,如果我的缓存类有那个对象,它会检查它的日期并返回那个对象,如果它不是10分钟。如果它较旧,则10分钟后它将从服务器在线下载较新的模型。它没有目的是下载它并返回它。但是我在将我的对象与DateTime配对以使其全部通用时遇到了一些问题。//模型publicclassPerson{publicstringName{get;放;}publicintAge{得到;放;}}classProgram{staticvoidMain(string[]args){Personp=newPerson();缓存c=newCache();p=c.Get(p);}}publicclassCache{structDatedObject{publicDateTimeTime{get;放;}publicTObj{得到;放;}}列出对象;publicCache(){objects=newList();}publicTGet(Tobj){boolfound=false;//搜索对象是否存储foreach(vareleminobjects)if(elem.ToString().Equals(obj.ToString())){//找到对象found=true;//检查它是否是新鲜的TimeSpansp=DateTime.Now-elem.Time;如果(sp.TotalMinutes<=10)返回elem;}//对象未找到或已过期//从服务器下载对象varret=JsonConvert.DeserializeObject("DOWNLOADEDJSONSTRING");if(found){//重写对象并将其替换到列表中foreach(vareleminobjects)if(elem.Obj.ToString().Equals(obj.ToString())){elem.Obj=ret;elem.Time=DateTime.Now;}}else{//添加对象到列表objects.Add(newDatedObject(){Time=DateTime.Now,Obj=ret});返回ret;在http://msdn.microsoft.com/en-us/library/system.runtime查看作为.NETFramework的一部分提供的内存缓存类。caching.memorycache.aspx您需要添加System.RunTime.Caching程序集作为对您的应用程序的引用下面是一个帮助程序类,用于添加项目和从缓存中删除它们。使用系统;使用System.Runtime.Caching;publicstaticclassCacheHelper{publicstaticvoidSaveTocache(stringcacheKey,objectsavedItem,DateTimeabsoluteExpiration){MemoryCache.Default.Add(cacheKey,savedItem,absoluteExpiration);cacheKey)whereT:class{returnMemoryCache.Default[cacheKey]asT;}publicstaticvoidRemoveFromCache(stringcacheKey){MemoryCache.Default.Remove(cacheKey);}publicstaticboolIsIncache(stringcacheKey){returnMemoryCache.Default[cacheKey]!=null;这样做的好处是它是线程安全的,它会自动为您使缓存过期。所以基本上你所要做的就是检查从MemoryCache获取的项目是否为空。但请注意,MemoryCache仅适用于.NET4.0+如果您的应用程序是Web应用程序,请使用System.Web.Caching而不是MemoryCache。System.Web.Caching从.NET1.1开始可用,您不必再添加对项目的引用。下面是Web的帮助程序类。使用System.Web;publicstaticclassCacheHelper{publicstaticvoidSaveTocache(stringcacheKey,objectsavedItem,DateTimeabsoluteExpiration){if(IsIncache(cacheKey)){HttpContext.Current.Cache.Remove(cacheKey);}HttpContext.Current.Cache.Add(cacheKey,savedItem,null,System.Web.Caching.Cache.NoAbsoluteExpiration,newTimeSpan(0,10,0),System.Web.Caching.CacheItemPriority.Default,null);}publicstaticTGetFromCache(stringcacheKey)whereT:class{returnHttpContext.Current.Cache[cacheKey]asT;}publicstaticvoidRemoveFromCache(stringcacheKey){HttpContext.Current.Cache.Remove(cacheKey);}publicstaticboolIsIncache(stringcacheKey){returnHttpContext.Current.Cache[cacheKey]!=null;还有其他两种模式都可以使用的缓存过期策略,比如基于文件路径的缓存使得缓存在文件更改时自动过期,SQL缓存依赖(周期性轮换查询SQLserver的变化),滑动过期或者你可以建立你自己的。它们非常方便。以上就是C#学习教程:如何创建缓存对象的类?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: