123 votes

C# générique "où la contrainte" avec "un type générique" définition?

Permettez-moi de donner l'exemple:

  1. J'ai une certaine classe générique/définition de l'interface:

    interface IGenericCar< T > {...}

  2. J'ai une autre classe/interface que je veux raconter avec classe au-dessus, par exemple:

    interface IGarrage< TCar > : where TCar: IGenericCar< (**any type here**) > {...}

En gros, je veux que mon générique IGarrage à être dépendant IGenericCar, qu'il s'agisse d' IGenericCar<int> ou IGenericCar<System.Color>, parce que je n'ai pas de dépendance à ce type.

145voto

JaredPar Points 333733

Il existe 2 moyens pour y parvenir

Option1: Ajouter un autre paramètre à IGarrage represnting le T qui doit être transmis à l' IGenericCar<T> contrainte

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

Option2: Définir une interface de base pour IGenericCar<T> ce qui n'est pas générique et contraindre à l'encontre de cette interface

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

6voto

Snarfblam Points 1836

Serait-il aucun sens de faire quelque chose comme:

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X