Implémenter une interface générique dans une classe abstraite générique ? [Résolu]

Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Dernière intervention
1 février 2013
- 8 mars 2012 à 15:38 - Dernière réponse :
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Dernière intervention
1 février 2013
- 17 mars 2012 à 17:41
Bonjour,

J'ai un petit soucis, je n'arrive pas à créer ma classe Derived :

interface IInterface<T> where T : class { }
abstract class Class<T> where T : class, IInterface<T> { }
class Derived : Class<String> { }


j'ai l'erreur suivante :

Le type 'String' ne peut pas être utilisé comme paramètre de type 'T' dans le type ou la méthode générique 'Test.Class<T>'. Il n'y a pas de conversion de référence implicite de 'String' en 'Test.IInterface<String>'.

Quelqu'un peut il me dire comment je dois faire au niveau de ma syntaxe pour que cela fonctionne ?

Merci d'avance .

(vs 2010, frk 4)
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
269
Date d'inscription
lundi 1 mars 2004
Dernière intervention
19 avril 2012
16 mars 2012 à 14:01
3
Merci
Salut,

ton erreur provient de cette ligne :

abstract class Class<T> where T : class, IInterface<T> { }


Ici il faut d'abord que tu fasse comprendre à ta classe que tu veux qu'elle implémente l'interface et que T doit être de type class.

Pour cela, la précédente ligne devient :

internal abstract class Class<T> : IInterface<T> where T : class { }


Mais à ta place, je retirerais les clauses Where parce que tu verras que si tu souhaite hériter ton objet classe par Double par exemple, tu ne pourras pas, car cette classe (et bien d'autres) ne sont pas des types référence...

Merci MasterShadows 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de MasterShadows
Messages postés
165
Date d'inscription
jeudi 3 novembre 2005
Dernière intervention
1 février 2013
17 mars 2012 à 17:41
0
Merci
J'ai mis class mais en réalité c'est une classe bien précise.

Merci pour ton aide ;)
Commenter la réponse de EmacLi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.