To create multi level generic inheritance in C3 following structure could be used:
// top most inheritance level public class TopLayer: MidLayer<TopLayer> { // Your code goes here } // internal layer public class MidLayer<T>: BaseLayer<T> where T: MidLevelLayer<T>, new () { // Your code goes here } // base layer public class BaseLayer<T> : IBaseObject, new() { // Your code goes here } // (optional) Interface public interface IBaseObject { // Your code goes here }