Laissez-moi donner un exemple:
J'ai une définition générique de classe / interface:
interface IGenericCar< T > {...}
J'ai une autre classe / interface que je souhaite associer à la classe ci-dessus, par exemple:
interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...}
Fondamentalement, je veux que mon IGarrage générique dépende IGenericCar
, peu importe si c'est IGenericCar<int>
ou IGenericCar<System.Color>
, parce que je n'ai aucune dépendance à ce type.
la source
T
dans leIGarage<TCar>
? Je ne vois aucune possibilité dans l'option 2. La meilleure solution serait deIGarage<TCar>
trouver le typeT
en analysant le typeTCar
.IGarage<IGenericCar<?>>.TellMeAboutCarsInGeneral()
-à- dire , ce qui serait probablement le résultat d'une mauvaise conception), mais je l'ai fait dans mon bricolage, et il est possible.IGarrage<TCar>
réellement gère le type générique sous-jacent (par exemple, il gère une propriété dudit type), alors il doit connaître le type, ce qui vous oblige à spécifier le type, qui est l'option 1 (la seule option viable alors). Cependant, siIGarrage<TCar>
ne gère pas directement le type générique sous-jacent (tout leIGarrage<TCar>
code est indépendant de ce type sous-jacent), alors l'option 2 est valide.Serait-il logique de faire quelque chose comme:
la source