public static void Main()
Console.WriteLine("Hello World");
IMessageOperationOneWay message = new MessageOperationOneWay();
message.ProcessMessage("Hello World");
public interface IMessageOperation
void ProcessMessage(string message);
public interface IMessageOperationOneWay
void ProcessMessage(string message);
public abstract class MessageOperationBase : IMessageOperation
public virtual void ProcessMessage(string message)
Console.WriteLine("This is from MessageOperationBase");
public class MessageOperationOneWayClient: MessageOperationBase
public override void ProcessMessage(string message)
base.ProcessMessage(message);
public abstract class ClientBase<T> where T: class
Channel = (T)Activator.CreateInstance(typeof(MessageOperationOneWayClient));
public class MessageOperationOneWay : ClientBase<IMessageOperation>, IMessageOperationOneWay
public void ProcessMessage(string message)
Console.WriteLine("This is from Child");
base.Channel.ProcessMessage(message);