Итак, у меня есть два пользовательских сложных типа, подобных этому (упрощенно для этого примера):
public class PendingProduct
{
public string Name { get; set; }
public string Description { get; set; }
public int ColorCount { get; set; }
}
Допустим, мне нужен этот объект, чтобы знать, как преобразовать себя в другой тип:
public class Product
{
public string Name { get; set; }
public string Description { get; set; }
public ProductColors Colors { get; set;}
}
Поэтому, когда я вызываю метод для преобразования PendingProduct в Product, я выполняю некоторую пользовательскую логику, которая добавляет число «ColorCount» объектов ProductColor в класс Product. Это полностью упрощено, но архитектура класса здесь действительно не имеет значения.
Мой главный вопрос:
Какой метод наилучшей практики использовать для преобразования одного сложного типа в другой сложный тип, когда свойства объектов различаются?
В реальном мире свойства очень разные, и я напишу некоторую пользовательскую логику, чтобы сопоставить то, что мне нужно, от Объекта А к Объекту Б.
Очевидно, что я мог бы просто написать функцию, которая принимает входной параметр объекта A и возвращает объект B, но я ищу более эффективный метод. IConvertible вступает в игру здесь? Есть ли что-то более похожее на ООП, которым я могу воспользоваться, а не просто написать функцию, которая делает то, что я хочу?
Объект A всегда должен знать, как преобразовать себя в Объект B.
РЕДАКТИРОВАТЬ: В качестве примечания, в реальном мире, Объект A и Объект B являются сущностями Entity Framework 4. Я хочу взять «Ожидающий продукт», преобразовать его в новую сущность «Продукт», присоединить к контексту данных и сохранить.