Classe genérica que herda seu tipo genérico [duplicado]

Duplicatas possíveis:
Por que os C # genéricos não podem derivar de um dos parâmetros de tipo genérico como nos modelos C +
No C # 4.0, é possível derivar uma classe de um parâmetro de tipo genéric

Estou tentando criar uma classe genérica que herda de seu tipo genérico (em 1.Attempt). Parece que é impossível. Mas, em outra tentativa, devo lançar o objeto. Alguma solução de design para esse problema?

// #1 Attempt
public interface IFoo { }

public class Generic<T> : T { }

public void play ()
{
    IFoo genfoo = new Generic<IFoo> ();
}

.

// #2 Attempt. Castable solution
public interface IAnything { }

public interface IFoo2 : IAnything { }

public class Generic2<T> : IAnything { }

public void play2 ()
{
    IFoo2 genFoo = (IFoo2) new Generic2<IFoo2> ();
}

questionAnswers(3)

yourAnswerToTheQuestion