Копирование свойств объекта: отражение или сериализация - что быстрее?

У меня есть два объекта одного типа, и мне нужно скопировать значения свойств из одного объекта в другой. Есть два варианта:

  1. Использовать отражение, перемещаться по свойствам первого объекта и копировать значения.

  2. Сериализуйте первый объект и десериализуйте копию.

Оба подходят для моих требований, вопрос в том, что мне лучше использовать с точки зрения скорости (стоимости)?

Пример

class Person
{
    public int ID { get; set; }
    public string Firsthand { get; set; } 
    public string LastName { get; set; } 
    public int Age { get; set; } 
    public decimal Weight { get; set; } 
}

Необходимо скопировать значения свойств из Person p1 в ] Человек p2 .

Для этого простого примера - какой метод быстрее?

Обновление

Для сериализации я использую ObjectCopier, предложенный здесь: Глубокое клонирование объектов

Для отражения я использую этот код:

foreach (PropertyInfo sourcePropertyInfo in copyFromObject.GetType().GetProperties())  
{
    PropertyInfo destPropertyInfo = copyToObject.GetType().GetProperty(sourcePropertyInfo.Name);

    destPropertyInfo.SetValue(
        copyToObject,
        sourcePropertyInfo.GetValue(copyFromObject, null),
        null);
}

9
задан Community 23 May 2017 в 12:33
поделиться