У меня есть два объекта одного типа, и мне нужно скопировать значения свойств из одного объекта в другой. Есть два варианта:
Использовать отражение, перемещаться по свойствам первого объекта и копировать значения.
Сериализуйте первый объект и десериализуйте копию.
Оба подходят для моих требований, вопрос в том, что мне лучше использовать с точки зрения скорости (стоимости)?
Пример
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);
}