Clase genérica que hereda su tipo genérico [duplicado]

Posibles duplicados:
¿Por qué los genéricos de C # no pueden derivar de uno de los parámetros de tipo genérico como pueden hacerlo en las plantillas de C ++?
En C # 4.0, ¿es posible derivar una clase de un parámetro de tipo genérico?

Estoy tratando de crear una clase genérica que herede de su tipo genérico (en 1. Intento). Parece que es imposible Pero en otro intento debo lanzar el objeto. ¿Alguna solución de diseño para ese 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> ();
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta