Я использую AutoMapper для этого. Это работает так:
Mapper.CreateMap(typeof(Person), typeof(Person));
Mapper.Map(a, b);
Теперь человек a обладает всеми свойствами человека b.
Помимо этого, AutoMapper работает и для разных объектов. Для получения дополнительной информации, проверьте его на http://automapper.org
Обновление: сейчас я использую этот синтаксис (упрощенно - на самом деле CreateMaps находятся в профилях AutoMapper):
Mapper.CreateMap<Person, Person>;
Mapper.Map(a, b);
Обратите внимание, что вам не нужно создавать CreateMap для сопоставления одного объекта того же типа с другим, но если вы этого не сделаете, AutoMapper создаст мелкую копию, что означает для непрофессионала, что если вы измените один объект , другие изменения также.