Hériter d'une classe générique de base, appliquer une contrainte, et de mettre en œuvre une interface en C#

C'est une question de syntaxe. J'ai une classe générique qui hérite d'une classe générique de base et l'application d'une contrainte à l'un des paramètres de type. Je tiens aussi à la classe dérivée pour implémenter une interface. Pour la vie de moi, je n'arrive pas à trouver la syntaxe correcte.

C'est ce que j'ai:

DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar { ... }

La première chose qui m'est venue à l'esprit était présent:

DerivedFoo<T1,T2> : ParentFoo<T1, T2> where T2 : IBar, IFoo { ... }

Mais c'est incorrect en tant que causes T2 à la nécessité de mettre en œuvre les deux IBar et IFoo, pas DerivedFoo à mettre en œuvre IFoo.

J'ai essayé un peu de Googling, l'utilisation des deux-points, points-virgules, etc, mais j'ai tourné court. Je suis sûr que la réponse est à la tête slappingly simple.

  • Je ne pouvais pas comprendre @Adam de réponse quand j'ai regardé une fois mais après 2minutes j'ai pu obtenir ce que c'est, merci pour la réponse. Dérivée de la classe a plus d'une mise en œuvre peut-être que c'est le point. De toute façon j'en veux pour preuve sa notation pour les autres. "classe DerivedClass<Type> : Myclass où Type : IType" . Rien ne doit être entre la dernière classe implémentée et la clause where.
InformationsquelleAutor Dan Rigby | 2010-01-05