using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Text.Json.Serialization;
public class BuildRoutesFromModelsRequest
public int SupplierId { get; set; }
public List<OrderDateShipDatePair> DatePairs { get; set; }
public int DestinationCountryId { get; set; }
public List<string> DestinationPostalCodes { get; set; }
public bool CustomerAllowsDa { get; set; }
public bool CustomerHasCommercialDock { get; set; }
public string CallerSource { get; set; }
public class OrderDateShipDatePair
public DateTime OrderDate { get; }
public DateTime ShipDate { get; }
[System.Text.Json.Serialization.JsonConstructor]
[Newtonsoft.Json.JsonConstructor]
public OrderDateShipDatePair(DateTime shipDate, DateTime orderDate)
public OrderDateShipDatePair(DateTime shipDate)
public OrderDateShipDate(){}
public static void Main()
DateTime _shipDate = new DateTime(2021, 4, 2);
var orderDate = _shipDate.AddHours(10);
var orderDateShipDatePair = new OrderDateShipDatePair(orderDate, _shipDate);
var routeRequest = new BuildRoutesFromModelsRequest
DatePairs = new List<OrderDateShipDatePair> { orderDateShipDatePair },
DestinationCountryId = 82,
DestinationPostalCodes = new List<string> { "10178" },
CustomerAllowsDa = false,
CustomerHasCommercialDock = false,
CallerSource = "API Test"
var serialized = System.Text.Json.JsonSerializer.Serialize(routeRequest);
var deserialized = JsonConvert.DeserializeObject<BuildRoutesFromModelsRequest>(serialized);
Console.WriteLine("deserialized is " + (deserialized == null ? "null" : "not null"));
Console.WriteLine(deserialized.DatePairs.First().OrderDate + " " + deserialized.DatePairs.First().ShipDate);
var datepair = new OrderDateShipDatePair(DateTime.Now, DateTime.Now.AddHours(2));
var dp = MessagePackSerializer.Deserialize<OrderDateShipDatePair>(MessagePackSerializer.Serialize(datepair));
Console.WriteLine(dp.OrderDate + " " + dp.ShipDate);