Я пишу простой класс mapper для клонирования и копирования свойств между различными объектами разных / одинаковых типов.
Отображение выполняется с помощью отражения и прекрасно работает с типами значений, списками и ссылочными типами.
Все работает для таких типов, как этот:
class SimpleValueTypes
{
public string Name { get; set; }
public int Number { get; set; }
public long LongNumber { get; set; }
public float FloatNumber { get; set; }
public bool BooleanValue { get; set; }
public AnotherType AnotherProperty{ get; set; }
}
где AnotherType - это тип класса. Сопоставление ссылочных типов выполняется путем рекурсивной проверки свойств до тех пор, пока все свойства не будут сопоставлены с назначением в значительной степени следующим образом:
object value = mapFrom.GetValue(input, null);
mapTo.SetValue(output, value, null);
где mapForm и mapTo являются объектами PropertyInfo.
Проблемы начались, когда появился новый тип со свойством «Bitmap», и я понял, что целый класс объектов нельзя обрабатывать одинаково.
Class NewType
{
public Bitmap Bitmap{get;set;}
public string Name{get;set;}
}
Что бы вы порекомендовали сделать для подобных случаев? Очевидно, что копирование свойств не приведет к новой копии исходного объекта Bitmap.
PS
Я не могу использовать automapper / emit mapper или любые другие внешние пакеты.