Нужно ли беспокоиться о самом эффективном алгоритме глубокого клонирования или просто сделать ручную копию при необходимости глубокого клонирования одного объекта? - PullRequest
0 голосов
/ 18 марта 2020

Существует множество вариантов глубокого клонирования в c# (двоичные файлы, отражения, деревья выражений, сериализация и т. Д. c.). Есть также много вопросов и ответов по этому поводу, но все они кажутся довольно старыми (например, до 2014 года).

У меня есть сценарий, в котором мне нужно клонировать объект, чтобы сохранить его измененный экземпляр, вот так ...

public class Attempt {
  public string Id;
  public DateTime ExpirationDateTime;
  ...
  several other properties that will be the same
}

public Attempt CreateAttemptFromAttempt(Attempt attempt) 
{
  // I could do this
  Attempt cloned = new Attempt() { Id = "aUniqueId", ExpirationDateTime = "new date time" }
  _repository.Save(cloned);
}

Учитывая этот, казалось бы, простой пример, есть ли предпочтительный алгоритм клонирования? Я бы предпочел не делать это вручную. Я подумал об использовании AutoMapper, потому что он уже находится в проекте, но обнаружил, что даже создатель рекомендует не использовать его для этого.

...