克隆缓存项目具有记忆的问题
-
23-09-2019 - |
题
我们具有的价值观存在缓企图书馆缓存块。该访问缓存的项目,这是一个列表,修改的价值观。我们不想缓存项目得到受影响。
因此,首先,我们回新列表(IEnumerator的CachedItem) 这确保访问增加和删除项目的影响小的原始缓存的项目。
但是,我们发现,所有实例列表我们回到访问是活着!对象关系的图表表明的关系之间的这种名单和EnterpriseLibrary.CacheItem.
所以我们改变了的返回是一个新的克隆的名单。为此,我们用个皇宫 说的 (从项目的数据选择新的DataClass(项目)).ToList() 甚至当你做如上所述,组织结构显示存在一定关系之间的这种名单和CacheItem.
我们不能做任何事情来创建一个克隆列项目,这是目前在企业库缓存,没有任何关系与缓?!
没有正确的解决方案
其他提示
你会做一个深刻的克隆的列表,即添加一个克隆的列表中的每个对象(及克隆的任何对象,它们可能包含,我建议将具有克隆()方法为你做这个),一个新的名单。正如上述评论,参考基准,无论多少次你复制。
这是我们如何克隆的项目时,拉他们出来的高速缓存。在对象都必须标明序列化。
using (MemoryStream buffer = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(buffer, objectToClone);
buffer.Position = 0;
object temp = formatter.Deserialize(buffer);
return temp;
}
不隶属于 StackOverflow