缓存集合并对其进行过滤,无需修改 ASP.NET 中的原始缓存集合

Dra*_*ouf 5 c# asp.net collections asp.net-mvc caching

我想在 asp.net mvc 中缓存一个数据集合并过滤该集合而不更改缓存的集合。

是否有可能做到这一点?

因为现在,当我获取缓存的集合时,我会获得对其的引用,并过滤该集合的数据更改缓存的集合。

有人知道吗?

Dra*_*ouf 2

我最终通过在每个对象中创建一个 Clone() 方法来解决我的问题,并在从缓存中检索主对象后立即调用主对象上的 Clone() 方法。

我的主要对象是帐户类型,其中包含域列表,其中包含产品列表等......

这是 Account 对象中的 Clone 方法:

    public Account Clone()
    {
        // Copy all properties of the object in a new object account
        var account = (Account)this.MemberwiseClone();

        var domainsList = new List<Domain>();
        foreach (var d in this.Domains)
        {
            domainsList.Add(d.Clone());
        }

        account.Domains = domainsList;

        return account;
    }
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我使用 MemberwiseClone() 复制简单属性,然后对所有复杂对象再次调用 Clone 。克隆是我在所有复杂对象中创建的自定义方法。

现在它工作正常......