我应该深度复制列表 <T> 而不是从 JSON 创建实例吗?

Should i DeepCopy the List<T> rather than creating isntances from it from JSON?

我有一个对象列表,例如 List<Employee>,列表中的每个员工都将从 .JSON 文件加载。我还需要从 List<Employee> 创建新实例,并且只需更改我需要创建的新员工的新实例的属性,因为 JSON 文件具有我不需要的每个员工的架构或工作流基础每次我需要 List<Employee>

的实例时从头开始创建

简单地说, 我什么时候需要一个新实例?我应该重新创建 List<Employee> 并读取 JSON 文件吗? 或者我应该使用 DeepCloner 扩展作为例子吗?用于克隆基础 List<Employee> 并启动 List 的新实例 ?

此外,json 文件可能稍后会更改。所以 Cloner 将只使用旧的员工列表!

我发现使用 DeepCloner 扩展从主 List<Employee> 创建超过 10 个实例时性能非常好。但是通过再次读取相同的 JSON 文件创建 List<Employee> 需要更多时间。

什么是好的方案,第一个实例必须从 json 加载,但是第二个和第三个实例呢?它也应该阅读 json 吗? json 以后可能会改?或者只是做 DeepCloner ?或者如何实现它。

关键词: Main List<Employee> : 这个 main 必须从 JSON 读取的第一个实例。

Mihir Dave 回答对我有好处。

如果我要实现这个,我会做如下的事情。

让我们假设 DeepClone 是一种缓存机制。并且在使用缓存时,您还应该考虑缓存破坏。

那么我们将如何实施呢?

创建一个 returns List 以及两个静态变量的方法

private static List<Employee> globalEmployees = null;
private static DateTime globalFileModifiedTime;

public static List<Employee> GetEmployees()
{}

现在,此方法应该知道何时从文件中读取以及何时使用 DeepCloner。

什么时候不使用 DeepCloner?

  • globalEmployees为空时
  • 当全局员工文件修改时间比我们存储在 globalFileModifiedTime
  • 中的时间更新时

注意:每次读取文件时,更新 globalEmployeesglobalFileModifiedTime 以便您可以将 DeepCloner 用于下一个请求

对于任何其他用例,您可以使用 DeepCloner。