我们将值存储在 Cache-Enterprise 库缓存块中。缓存项(即 List)的访问器会修改值。我们不希望缓存项目受到影响。
因此,首先我们返回一个新的 List(CachedItem 的 IEnumerator) 这确保访问器添加和删除项目对原始缓存项目几乎没有影响。
但是我们发现,我们返回给访问器的所有 List 实例都是 ALIVE 的!对象关系图显示了此列表和 EnterpriseLibrary.CacheItem 之间的关系。
所以我们把return改成了一个新克隆的List。为此,我们使用了 LINQ 说法(从数据中的项目选择新的 DataClass(item) ).ToList(),即使您按照上述方式执行操作,ORG 也会显示此列表与 CacheItem 之间存在关系。
我们不能做任何事情来创建企业库缓存中存在的列表项的克隆,它与缓存没有任何关系吗?!