我应该深度复制列表 <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
中的时间更新时
注意:每次读取文件时,更新 globalEmployees
和 globalFileModifiedTime
以便您可以将 DeepCloner 用于下一个请求
对于任何其他用例,您可以使用 DeepCloner。
我有一个对象列表,例如 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
中的时间更新时
注意:每次读取文件时,更新 globalEmployees
和 globalFileModifiedTime
以便您可以将 DeepCloner 用于下一个请求
对于任何其他用例,您可以使用 DeepCloner。