C # genérico “donde la restricción” con la definición de “cualquier tipo genérico”?

Déjame dar un ejemplo:

  1. Tengo una definición genérica de clase / interfaz:

    interface IGenericCar {...}

  2. Tengo otra clase / interfaz que quiero relacionar con la clase anterior, por ejemplo:

    interface IGarrage : where TCar: IGenericCar {...}

Básicamente, quiero que mi IGarrage genérico dependa de IGenericCar , independientemente de si es IGenericCar o IGenericCar , porque no tengo ninguna dependencia con ese tipo.

Normalmente hay 2 formas de lograr esto

Opción 1: agregue otro parámetro a IGarrage que represente la T que se debe pasar a la IGenericCar

 interface IGarrage where TCar : IGenericCar { ... } 

Opción 2: defina una interfaz base para IGenericCar que no sea genérica y constriña contra esa interfaz

 interface IGenericCar { ... } interface IGenericCar : IGenericCar { ... } interface IGarrage where TCar : IGenericCar { ... } 

¿Tendría algún sentido hacer algo como esto?

 interface IGenericCar< T > {...} interface IGarrage< TCar, TCarType > where TCar: IGenericCar< TCarType > {...}