using System.Text.Json.Serialization;
public class MessageBaseDto
public string AssetId { get; set; }
public class DataMessageBaseDto:MessageBaseDto
public string AssetType { get; set; }
public long StartDate { get; set; }
public long EndDate { get; set; }
public class CalculationMessageBaseDto:MessageBaseDto
public int BatchId { get; set; }
public bool IsCacheReady { get; set; }
public string MetricName { get; set; }
public int MetricVersion { get; set; }
public class CommandServiceBusMessage<T> where T : MessageBaseDto
[JsonPropertyName("payload")]
public T Payload { get; set; }
[JsonPropertyName("correlationId")]
public int CorrelationId { get; set; }
public static void SendMessageAsync<T>(CommandServiceBusMessage<T> msg, string sendToDestinationTopic) where T: MessageBaseDto {
public static void Main()
Console.WriteLine("Hello World");
var messageToSend = new CommandServiceBusMessage<CalculationMessageBaseDto>();
messageToSend.CorrelationId = 0;
messageToSend.Payload = new CalculationMessageBaseDto() {
MetricName = "This is a test"
Console.WriteLine(messageToSend.Payload.MetricName);
SendMessageAsync(messageToSend, "test");
Console.WriteLine("Works if printed");