public string Title {get;}
public class AccountMessage : Message {
public new string Title {get;} = "AccountMessage";
public interface IServiceBusSender<out T> where T: Message
public T SendMessage(string message);
public class ServiceBusSender<T> : IServiceBusSender<T> where T : Message, new()
public T SendMessage(string message) {
Console.WriteLine("Title: " + message);
public static void Main()
IServiceBusSender<AccountMessage> accountSender = new ServiceBusSender<AccountMessage>();
accountSender.SendMessage("100% AccountMessage");
IServiceBusSender<Message> accountSender = new ServiceBusSender<AccountMessage>();
Console.WriteLine(accountSender.SendMessage("AccountMessage to Message") != null);
IServiceBusSender<AccountMessage> accountSender = new ServiceBusSender<Message>();
Console.WriteLine(accountSender.SendMessage("Message to AccountMessage") != null);