public static void Main()
MyChannel ch = new MyChannel();
Console.WriteLine(ch is Channel<IMessage>);
public interface IMessage {}
public interface IChannel
public abstract class Channel<T> : IChannel where T : IMessage
public string Name{ get; set; }
public interface IProtocolMessage : IMessage
public class MyChannel : Channel<IProtocolMessage>