Должен ли я DeepCopy Список <T>, а не создавать его из JSON? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть список объектов, например List<Employee>, каждый сотрудник в списке будет загружаться из файла .JSON.мне также нужно создать новые экземпляры из List<Employee> и просто изменить свойства нового экземпляра для нового сотрудника, которого мне нужно создать, потому что файл JSON имеет архитектуру или базу рабочего процесса для каждого сотрудника, который мне не нужно создавать с нуля каждый разМне нужен экземпляр List<Employee>

Вкратце, Когда мне нужен новый экземпляр?Должен ли я создать List<Employee> и снова прочитать файл JSON.Или я должен использовать DeepCloner расширение в качестве примера?для клонирования базы List<Employee> и запуска нового экземпляра List?

Также файл json может быть изменен позже.поэтому Cloner будет просто использовать старый список сотрудников!

Я считаю, что производительность потрясающая, если использовать расширение DeepCloner для создания более 10 экземпляров из основного List<Employee>.но создание List<Employee> из чтения того же файла JSON снова займет больше времени.

Что для этого хорошего сценария, первый экземпляр должен загружаться из json, но как насчет второго и третьего экземпляров?должен ли он читать JSON также?JSON может быть изменился позже?или просто сделать DeepCloner?или как этого добиться.

Ключевые слова: Main List<Employee>: это главный первый экземпляр, который должен читать из JSON.

Михир Дэйв ответь мне хорошо.

1 Ответ

0 голосов
/ 22 апреля 2019

Если бы я реализовал это, я бы сделал что-то вроде ниже.

давайте предположим, что 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.

...