在控制台应用程序启动时,我有一个巨大的数据集正在从SQL数据库中检索,并且对该数据集执行了大量计算。由于每次访问数据库都很昂贵,因此我将数据集保存在内存缓存中以备将来使用。但是,问题是当我将缓存中的数据分配给对象时,将其复制为引用类型,并且对该对象的任何更改也会更改缓存对象中的数据。您能否提出一种方法来实现深度复制以将数据从缓存复制到类对象。这是我现在正在使用的一段代码:
现在,如果我更改测试对象,它也会更改缓存中的数据。您能建议如何为这段代码实现深层副本吗?
这是我现在正在使用的一段代码:
ObjectCache cache = MemoryCache.Default;
if (cache["Test1234"] == null)
{
cache["Test1234"] = testobject;
}
else
{
testobject= (clsTest)cache.Get("Test1234");
}
现在,如果我更改测试对象,它也会更改缓存中的数据。您能建议如何为这段代码实现深层副本吗?
该问题不是以下两个原因已回答的现有问题的副本: 1)由于访问限制,我没有能力标记很多可序列化的类。因此,这对我来说不是可行的解决方案。 2)我需要创建一个深层副本,并创建所有嵌套对象的深层副本。大多数答案对于创建最多1级的深层副本很有用。
希望这会有所帮助。
@Peter Duniho