Let me give example:
-
I have some generic class/interface definition:
interface IGenericCar< T > {...}
-
I have another class/interface that I want to relate with class above, for example:
interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...}
Basically, I want my generic IGarrage to be dependent on IGenericCar
, regardless if it's IGenericCar<int>
or IGenericCar<System.Color>
, because I don't have any dependency to that type.
Best Answer
There are typically 2 ways to achieve this.
Option1: Add another parameter to
IGarrage
representing theT
which should be passed into theIGenericCar<T>
constraint:Option2: Define a base interface for
IGenericCar<T>
which is not generic and constrain against that interface