EmacLi
Messages postés165Date d'inscriptionjeudi 3 novembre 2005StatutMembreDernière intervention 1 février 2013
-
8 mars 2012 à 15:38
EmacLi
Messages postés165Date d'inscriptionjeudi 3 novembre 2005StatutMembreDerniè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 ?
MasterShadows
Messages postés268Date d'inscriptionlundi 1 mars 2004StatutMembreDernière intervention19 avril 201212 16 mars 2012 à 14:01
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...