JsonAnalysis jsontest = new JsonAnalysis();
jsontest =(JsonAnalysis)FMCache.GetByKey("111",()=>{
JsonAnalysis json = new JsonAnalysis();
json.TagName = "haha";
return json;
});
jsontest.TagName="nono";
JsonAnalysis为一个对象
()=>{
JsonAnalysis json = new JsonAnalysis();
json.TagName = "haha";
return json;
}
这是一个缓存,如果“111”的缓存为空,就会执行这段话,把缓存存进去(System.Web.Caching.Cache webCache = System.Web.HttpRuntime.Cache;这缓存对象)。
现在 我发现 第一次取出来的对象 tagname 是haha
但是 我改变了tagname属性为nono后 我再从缓存中取出来的对象就是nono了
而不是 haha
我查了下,貌似是 对象改变后,缓存会重置。
我想了下,貌似可以用深度克隆。
求大神指点
1 public T DeepClone<T>(T t) 2 { 3 if (t != null) 4 { 5 using (Stream s = new MemoryStream()) 6 { 7 IFormatter formatter = new BinaryFormatter(); 8 formatter.Serialize(s, t); 9 s.Seek(0, SeekOrigin.Begin); 10 return (T)formatter.Deserialize(s); 11 } 12 } 13 return t; 14 }