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

问题描述 投票:0回答:1

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

简而言之,当我需要一个新实例?我应该创建List<Employee>并再次读取JSON文件。或者我应该使用DeepCloner扩展名作为示例?克隆基础List<Employee>并启动List的新实例?

此外,json文件可能会在以后更改。所以克隆人只会使用旧的员工名单!

当使用DeepCloner扩展从主List<Employee>创建10个以上的实例时,我发现性能很棒。但是从再次读取相同的JSON文件创建List<Employee>需要更多时间。

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

关键字:主要List<Employee>:这是一个必须从JSON读取的第一个实例。

Mihir Dave对我有好处。

c# .net json clone deep-copy
1个回答
0
投票

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

让我们假设DeepCloner是一种缓存机制。当使用缓存时,你应该考虑缓存破坏。

那么我们将如何实现呢?

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

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

public static List<Employee> GetEmployees()
{}

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

什么时候不使用DeepCloner?

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.