Déjame dar un ejemplo:
Tengo una definición genérica de clase / interfaz:
interface IGenericCar< T > {...}
Tengo otra clase / interfaz que quiero relacionar con la clase anterior, por ejemplo:
interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...}
Básicamente, quiero que mi IGarrage genérico dependa de IGenericCar
, independientemente de si es IGenericCar<int>
o IGenericCar<System.Color>
, porque no tengo ninguna dependencia de ese tipo.
c#
generics
where
type-constraints
Nenad
fuente
fuente
T
dentro delIGarage<TCar>
? No veo ninguna posibilidad en la opción 2. La mejor solución sería si seIGarage<TCar>
encontrara el tipoT
analizando el tipoTCar
.IGarage<IGenericCar<?>>.TellMeAboutCarsInGeneral()
, que probablemente sería el resultado de un diseño deficiente), pero lo he hecho en mis retoques, y es posible.IGarrage<TCar>
realmente maneja el tipo genérico subyacente (por ejemplo, maneja una propiedad de dicho tipo), entonces necesita saber el tipo, lo que requiere que especifique el tipo, que es la opción 1 (la única opción viable entonces). Sin embargo, siIGarrage<TCar>
no maneja directamente el tipo genérico subyacente (todo elIGarrage<TCar>
código es independiente de este tipo subyacente), la opción 2 es válida.¿Tendría algún sentido hacer algo como:
fuente