Будет ли смысл делать что-то вроде:
interface IGenericCar< T > {...} interface IGarrage< TCar, TCarType > where TCar: IGenericCar< TCarType > {...}