我有一个对象列表,例如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对我有好处。
如果我要实现这个,我会做类似下面的事情。
让我们假设DeepCloner是一种缓存机制。当使用缓存时,你应该考虑缓存破坏。
那么我们将如何实现呢?
创建一个返回List以及两个静态变量的方法
private static List<Employee> globalEmployees = null;
private static DateTime globalFileModifiedTime;
public static List<Employee> GetEmployees()
{}
现在,此方法应该知道何时从文件中读取以及何时使用DeepCloner。
什么时候不使用DeepCloner?
globalEmployees
为空时globalFileModifiedTime
中存储的时间更新注意:每次从文件中读取时,请更新globalEmployees
和globalFileModifiedTime
,以便将DeepCloner用于下一个请求
对于任何其他用例,您可以使用DeepCloner。