public abstract record SaveNoteMessage(string CustomerName);
public record SavePartyNoteMessage(string CustomerName, int PartyNo) : SaveNoteMessage(CustomerName);
public record SaveContractNoteMessage(string CustomerName, int ContractId) : SaveNoteMessage(CustomerName);
public void SaveNote(SavePartyNoteMessage msg) {
Console.WriteLine("Saving party note with Party NO: " + msg.PartyNo);
public void SaveNote(SaveContractNoteMessage msg) {
Console.WriteLine("Saving contract note with Contract ID: " + msg.ContractId);
public static void Main()
var noteMessage = new SaveContractNoteMessage("Craig", 200);
new Program().SaveNote(noteMessage);