Вы можете использовать Automapper или Valueinjecter
Редактировать:
Хорошо, я написал функцию, которая использует отражение, будьте осторожны, он не будет обрабатыватьслучаи, когда сопоставленные свойства не совсем равны, например, IList не будет отображаться с List
public static void MapObjects(object source, object destination)
{
Type sourcetype = source.GetType();
Type destinationtype = destination.GetType();
var sourceProperties = sourcetype.GetProperties();
var destionationProperties = destinationtype.GetProperties();
var commonproperties = from sp in sourceProperties
join dp in destionationProperties on new {sp.Name, sp.PropertyType} equals
new {dp.Name, dp.PropertyType}
select new {sp, dp};
foreach (var match in commonproperties)
{
match.dp.SetValue(destination, match.sp.GetValue(source, null), null);
}
}