private void UpdateOrder(Order order, IOrderModel dto) { order.Name = dto.Name; var properties = dto.GetType().GetProperties(); foreach (var prop in properties) { var value = prop.GetValue(dto); if (prop.CustomAttributes.Any(p => p.AttributeType == typeof(OrderFieldAttribute))) { var valueType = GetValueType(value); order.OrderItems.Add( new OrderItem() { OrderId = order.Id, Name = prop.Name, Value = GetStringValue(value, valueType), ValueType = valueType.ToString() } ); } } }